小编今天尝试在本地去连接服务器上的mysql8数据库,结果各种坑,来分享一下
服务器:阿里云Linux7系统
连接时报错2003 2005 2059
报错2003和2005,问题描述:本地客户端及代码连接均失败 1.查看端口号是否为 3306
show global variables like 'port'; # 查看MySQL运行的实际端口
2.给用户 root 修改权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'adminpwd' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
3.查看防火墙的状态
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
systemctl status firewalld #检查防火墙状态
如果你觉得关闭防火墙不安全,可打开远端服务器的iptables(安装或升级命令“yum install iptables”)(我用root用户登录的),并用“vi /etc/sysconfig/iptables”检查3306端口是否打开,如没有,在文件中加入“-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT”(如下所示),保存文件并用“service iptables restart”命令重启iptables
查看my.cnf(路径:/etc/mysql下) 或者 mysqld.cnf(/etc/mysql/mysql.conf.d下)文件
我在网上看到的好多都是修改my.cnf,加#注释掉bind-address = 127.0.0.1 如下: #bind-address = 127.0.0.1 .
但我的my.cnf下没有找到该字段.
5.在阿里云控制台将3306端口开启
**报错2059,问题描述:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 现在说第二种方式
解决方法:
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY '密码';
最后强烈建议,不要用SQLyog啦,那个东西太坑啦
Naviact 12 破解版,免费拿走
链接:https://pan.baidu.com/s/14SiEU7SxNVK1cSZtsbf4gA
提取码:3k6d