一点感触
安装MySQL 5分钟,远程连接MySQL 5小时。虽说夸张了点,但只要你遇到过诸如2003错误,10060错误,还有经典的1045错误,你就能深深地体验到我的伤痛……来朋友,干一杯。
借着这次实验室的数据库服务器开局的机会,通过建立多个快照,反复测试,终于理清了MySQL的远程连接的头绪。原来真的好简单,两步就能搞定!!!
配置环境
- 全新安装CentOS 7.7.1908(Core)
- 全新安装MySQL 5.7.28-1
- 服务启动正常
- root密码已修改
第一步 配置firewalld
重要的事情最先说,就两行命令:
#firewall-cmd --permanent --add-service=mysql
#firewall-cmd --reload
保证MySQL服务器与客户端之间的物理连通,是排查问题的基本条件。全新安装的CentOS7的默认firewalld就是开启的,所以需要允许mysql服务通过。同样的,如果你们的环境里面启用了iptables,也需要放行mysql的通信。
第二步 修改MySQL user表
命令多一点,四条:
mysql> use mysql;
mysql> select host,user from user;
mysql> update user set host = '%' where user='root';
mysql> flush privileges;
对应操作日志截图:此时,你用Navicat类似的客户端远程连一下,就顺利地连接上了,就这么简单!
PS
- 从头到位没有修改过MySQL的配置文件——my.cnf,就是安装时怎样,现在还是怎样。大家可以下载我的配置看看。
- skip_grant_tables,这个MySQL的配置文件my.cnf中[mysqld]下面的参数也能解决远程连接的问题。但我个人不喜欢放大安全权限,测试后放弃这个方法。
- 类似下面这样的授权命令,也可以在第二步中采用,同上一条的理由,测试后我放弃这个方法。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.225.166' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
或
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
参考资料
1.firewalld允许nginx\apache\mysql通过
2.mysql数据库远程访问设置方法
3.[小技巧]值得收藏的MySQL: Connection Refused排查方案