MySQL(connection refused)解决方法

连接远程mysql提示connection refused,基本上要排查的地方就三个,首先是防火墙是否开放了3306端口,其次数据库配置文件是否绑定到了127.0.0.1,最后检查用户权限,host是否是%,按照以上流程问题迎刃而解。

本人mysql在Ubuntu上,其他系统此操作雷同。

防火墙是否开放

判断是否开启防火墙

1
sudo ufw status

开放防火墙3306端口

1
sudo ufw allow 3306

确认3306端口是开放

1
2
3
4
netstat -an | grep 3306

# 结果:
tcp6 0 0 :::3306 :::* LISTEN

数据库是否绑定127.0.0.1

修改mysql配置文件,注释bind-address=127.0.0.1。

1
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

重启Ubuntu再次查看3306状态。

用户授权所有连接

可以尝试使用telnet测试远程端口是否能联通

1
telnet msyql所在服务器ip 3306

我这里是可以联通的,但是数据库还是连接不上去的话那就是用户授权的问题了

切换数据库并创建用户

1
2
use mysql
create user 'tony'@'localhost' identified by '123456';

授权

改表法
1
UPDATE user SET Host = ‘%’ WHERE User = ‘tony’ AND Host=’localhost’;
授权法
1
grant all privileges on mydatabase.* to 'tony'@'%';   //%表示任何ip都可以访问到  all privileges 表示所有权限

表示给tony用户mydatabase数据库的输有权限,并支持所有连接

授权生效

1
flush privileges;

总结,基本上数据库连不上就排查这三步,相信绝对能解决你的问题。