当我尝试使用命令行mysql -h <remote-ip> -u any_existing_users -p
或任何其他mysql客户端(如phpmyadmin)连接远程MySQL服务器时,它不起作用,错误提示是
ERROR 2003 (HY000) Can't connect to MySQL server on '<remote-ip>' (61)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试ssh <remote-ip>
在本地连接MySQL时mysql -u root -p
,没有问题.
这是user table(SELECT User, Host FROM mysql.user;
)的一部分:
+------------------+----------------+
| User | Host |
+------------------+----------------+
| root | % |
| other_users | <remote-ip> |
| root | localhost |
+------------------+----------------+
Run Code Online (Sandbox Code Playgroud)
这是iptable:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
Run Code Online (Sandbox Code Playgroud)
所以有什么问题?
Kaf*_*fee 69
检查你的mysql服务器是否正在使用netstat监听套接字:
netstat -tulpen
Run Code Online (Sandbox Code Playgroud)
并搜索3306.
如果不是或仅在localhost上,请检查my.cnf并搜索该bind-address
行并将其更改为:
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
然后重新启动服务器并再试一次.
Hai*_*mei 29
检查状态:
netstat -tulpen
Run Code Online (Sandbox Code Playgroud)
修改配置:
nano /etc/mysql/my.cnf
# Edit:
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
输入mysql并授予权限:
mysql -umyuser -pmypassword
# Run:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
Run Code Online (Sandbox Code Playgroud)
重启mysql
/etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)
ulo*_*lou 22
随着MySql 5.7
他们更改文件,所以bind-address
现在:
/etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)
代替:
/etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)
rce*_*dar 12
在服务器上安装Centos 7后,我遇到了这个问题.我无法通过远程计算机中的Mysql Workbench访问它.
问题出在防火墙配置中.最终,解决方案来自:
sudo firewall-cmd --zone=public --permanent --add-service=mysql
Run Code Online (Sandbox Code Playgroud)
然后,重启防火墙:
sudo systemctl restart firewalld
Run Code Online (Sandbox Code Playgroud)