在使用自建 MySQL 数据库的时候,偶尔会遇到无法连接 MySQL 服务器的情况,以下列举一些常见问题及解决办法:
服务器上部署 MySQL 在本地直接连接服务器是没有问题的,远程连接 MySQL 会显示错误 。
报错:EHost 'XX.XX.XX.XX' is not allowed to connect to this MySQL serverConnection closed by foreign host.
查看 MySQL 监听的地址就是 0.0.0.0 。这种情况请先检查两个地方
1、服务器是否开启了防火墙,请先关闭防火墙测试
2、MySQL 是否没有打开远程登录
打开远程登陆有两种方法。
(1 )该表:在本机登入 MySQL 后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从 ”localhost” 改为 '%'。
(2 )授权法:为 MySQL 创建一个 远程连接的用户
一般这样配置就没有问题了。
MySQL 监听在 127.0.0.1 上导致外部无法连接,如下图:
修改 MySQL 配置文件里面的 bind-address,如下图重启即可。
MySQL 远程连接报错:Lost connection to MySQL server at 'reading initial communication packet'
1、检查是否有防火墙限制
2、检查 MySQL 是否有访问权限
use mysql;
Grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;
flush privileges;
3、检查 my.ini 文件里是否设置了 bind-address 参数,如果有将该条注释掉即可。
4、在 my.ini 中添加 skip-name-resolve
vi /etc/my.cnf
[mysqld]
skip-name-resolve #增加这个
5、修改 hosts.allow
vi /etc/hosts.allow
mysqld-max : ALL :ALLOW #增加这个
ECS Linux 主机本机 MySQL 客户端版本为 5.6,连接低版本的 MySQL 客户端
报错ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
由于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储;但是客户端升级之后采用了新的密码格式 。mysql5.6版本遇到这种不一致的情况就会拒绝连接 。
连接时增加 --secure-auth 参数,连接命令如下:
mysql -h host -u username --secure-auth -p
详细的表述可以参考 MySQL 的手册
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。