mysql使用总结

355 阅读4分钟

应用场景

k-v型存储适合MongoDB 或者 redis, 关系型使用mysql

可能用到的地址

windows Mysql@8.0.21安装包下载地址

安装

bin目录下

  1. mysqld --install 安装服务
  2. mysqld –-initialize 会在 mysql-8.0.21-winx64路径下生成一个data文件夹,里面有一个以.err结尾的文件 这个文件里面有MySQL初次登录的密码,使用编辑器打开可以看到 3.配置mysql启动文件,在mysql-8.0.21-winx64路径下新建一个 my.ini文件,使用记事本打开编译以下内容:之后登录查看编码是不是变化 show variables like 'char%';
[mysqld]
#设置3306端口号
port=3306
#设置MySQL的安装目录
basedir=D:\\download\\setup\\mysql-8.0.21-winx64\\mysql-8.0.21-winx64(这是我的MySQL路径,注意用\\而非\)
#设置MySQL数据库的数据存放目录
datadir=D:\\download\\setup\\mysql-8.0.21-winx64\\mysql-8.0.21-winx64\\data(与上面同理,注意最后的data文件名保存不变)
#运行最大连接数
max_connections=200
#运行连接失败的次数。这也是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#服务端使用的字符集默认为utf-8
character-set-server=utf8
[mysql]
#客户端使用的字符集默认为utf8
default-character-set=utf8
[client]
#客户端默认端口号为3306
port=3306
  1. net start mysql 启动mysql服务
  2. 登录mysql mysql -u root -p
  3. 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'zhifeng1024';
  1. quit退出

可能用到的命令

修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'zhifeng1024';

创建一些新的用户并授权

create user 'test'@'localhost' identified by '你的密码'; grant all privileges on . to test@'localhost'; 运行这两句sql语句,再次用test的身份输入密码进入 在命令行输入:mysql -utest -p 回车 , 再输入刚刚设置的密码即可进入。

刷新

FLUSH PRIVILEGES;

删除服务

msqld --remove

初始化配置,生成data文件夹

安装目录会生成data文件夹,结尾带上-insecure可以不用使用密码就能登陆mysql,mysql -uroot 如果不带这个结尾,可以去data文件夹下找.err结尾的文件查看临时初始密码 mysqld --initialize-insecure

show variables like 'char%'

node中使用mysql模块文件封装

var mysql = require('mysql');

// 创建 mysql 连接池资源
var pool = mysql.createPool({
    host     : 'localhost',
    user     : 'me',
    password : 'secret',
    database : 'my_db'
    acquireTimeout: 15000, // 连接超时时间
    connectionLimit: 100, // 最大连接数
    waitForConnections: true, // 超过最大连接时排队
    queueLimit: 0, // 排队最大数量(0 代表不做限制)
});

exports.query = function(sql, values) {
    new Promise(function(resolve, reject){
        //建立链接
        pool.getConnection(function(err, connection) {
            if (err) {
                return reject(err); // not connected!
            }
            connection.query(sql, values, function(error, results) {
                //将链接返回到连接池中,准备由其他人重复使用
                connection.release();
                if (error){
                    return reject(error);
                }
                resolve(results);
            });
        });
    });
};

连接参数说明

  • acquireTimeout: 表示连接超时时间,默认是10000 ms;最大连接数越大,连接时间越长。建议设置 15000ms
  • connectionLimit: 最大连接数, 默认是 10; 并发操作较大时,连接数越大, 执行速度较快。经测试, 20000 并发执行数据库查询操作, 最大连接数为 10时, 响应时长 14508ms; 最大连接数设置50, 300等,响应时长接近 11000ms。所以,建议最大连接数设置100。
  • waitforConnections:超过最大连接数是否等待。默认是等待,若设置成false,则超过最大连接数就报错。建议设置为true。
  • queueLimit:排队最大数量。默认为无限制,0 代表无限制。建议设置为 0。

连接数目相关查询

查询最大连接数

show global variables like '%max_connections%';

设置最大连接数

set global max_connections=1000;

响应的最大连接数

show global status like 'Max_used_connections';

查看线程信息

show status like 'Threads%'

睡眠连接超时数

show global variables like 'wait_timeout';

杀死连接id (表: INFORMATION_SCHEMA.PROCESSLIST)

kill 21120003

可能遇到的问题(FAQ)

net start mysql 发生系统错误 5。 拒绝访问。的解决方法

以管理员的身份打开再次运行即可

net start mysql 启动失败

删除安装目录下的data文件夹,进入bin文件夹,执行mysqld --initialize

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

刚登陆数据必须修改密码,否则汇报这个错误。

大数据量导入数据时发生错误?

编码格式使用 utf8mb4,utf8是三个的字节的,大数据量导入难免会包含一些表情或者一些特殊字符四个字节的,所以使用utf8mb4

如何快速将本地数据库数据导入服务器数据库中

前提建立在你已经使用navicat连接到远程服务器用,连接好服务器后可以看到服务器数据库,我们右击本地数据或服务器数据库都可以,然后点击数据传输,把对应的信息填好然后点开始就可以了