【mysql】远程连接服务器数据库出现 Client does not support authentication protocol requested by server的解决方法

前言

之前已经配好了本地数据库与云服务器上的数据库的连接,也能正常进行操作。几个月后某天打开navicat想打开此连接却弹出了个错误提示窗口,显示Client does not support authentication protocol requested by server; consider upgrading MySQL client。访问服务器上的项目也是出现了数据库连接异常的信息。

解决方法

1.在服务器的mysqld配置文件中加入skip-grant-tables这句话

用xshell远程连接服务器后输入mysql -u root -p 且输入之前设置过的root密码后发现登不进去,于是在mysqld配置文件中加入了skip-grant-tables,作用就是让你不用密码就可以登入mysql。:wq保存退出后输入:service mysql restart,重新启动mysql。

2.发现mysql的user表里没有root用户

创建root用户

create user 'root'@'localhost' identified by '数据库密码';

此步骤可能会报以下错误

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

可以用以下方法解决

输入:flush privileges;

此时再次重新创建root用户

create user 'root'@'localhost' identified by '数据库密码';

 如果再次报错,则输入这个命令

drop user 'root'@'localhost';

再次重新创建用户

create user 'root'@'localhost' identified by '数据库密码'; 

结果没有再报错,root用户创建成功。

输入: flush privileges; 再次刷新一下

输入:exit; 退出数据库

此时删除mysqld配置文件中的skip-grant-tables

输入:service mysql restart,重新启动mysql。

 3.把root用户的host项从localhost改为%

当前的root用户的host的值是localhost,服务器上的项目和本地数据库都没法访问到服务器上的数据库。所以需要把localhost改为%

mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> select host, user from user;
mysql> flush privileges; 

如果服务器防火墙没有开放3306端口的话还需开放一下

到此这个问题就解决了。都可以正常连接和访问了 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值