应用场景
k-v型存储适合MongoDB 或者 redis, 关系型使用mysql
可能用到的地址
安装
bin目录下
- mysqld --install 安装服务
- 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
- net start mysql 启动mysql服务
- 登录mysql mysql -u root -p
- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'zhifeng1024';
- 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连接到远程服务器用,连接好服务器后可以看到服务器数据库,我们右击本地数据或服务器数据库都可以,然后点击数据传输,把对应的信息填好然后点开始就可以了