node 连接 mysql 数据库
问题
出现 Client does not support authentication protocol requested by server
错误
解释
在安装完MySQL的时候,我们现在一般都使用Navicat来连接数据库,可惜出现下面的错误:
1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client
出现上述问题的原因是:MySQL 8.0 之前的版本中密码的加密规则是
mysql_native_password
,而在 MySQL 8.0 之后,加密规则是caching_sha2_password
把 MySQL 用户登录密码加密规则还原成mysql_native_password
即可!
解决方案
1.查看MYSQL数据库中所有用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
2.修改加密规则,安装的过程中有提示
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
3.修改用户的认证规则
alter user '用户名'@'%' identified with mysql_native_password by '密码';
4.刷新权限
flush privileges;
5.停止并重启服务
# windows 下重启 Mysql 服务
net stop mysql
net start mysql
Linux 下重启 Mysql
1、使用linux命令service 启动:
service mysqld start
2、使用 mysqld 脚本启动:
/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:
safe_mysqld&
二、停止
1、使用 service 启动:
service mysqld stop
2、使用 mysqld 脚本启动:
/etc/inint.d/mysqld stop
3、 mysql admin shutdown
三、重启
1、使用 service 启动:
service mysqld restart
2、使用 mysqld 脚本启动:
/etc/inint.d/mysqld restart