当我尝试使用命令行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)
但是,当我尝试ssh <remote-ip>
并通过mysql -u root -p
在本地连接MySQL时,没有问题。
以下是用户表(SELECT User, Host FROM mysql.user;
)的一部分:
+------------------+----------------+
| User | Host |
+------------------+----------------+
| root | % |
| other_users | <remote-ip> |
| root | localhost |
+------------------+----------------+
这是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
那么,问题是什么?
答案 0 :(得分:67)
检查你的mysql服务器是否正在使用netstat监听套接字:
netstat -tulpen
并搜索3306。
如果不是或仅在localhost上,请检查my.cnf并搜索bind-address
行并将其更改为:
bind-address = 0.0.0.0
然后重新启动服务器并重试。
答案 1 :(得分:27)
检查状态:
netstat -tulpen
修改您的配置:
nano /etc/mysql/my.cnf
# Edit:
bind-address = 0.0.0.0
输入mysql并授予权限:
mysql -umyuser -pmypassword
# Run:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
重启mysql
/etc/init.d/mysql restart
答案 2 :(得分:21)
使用MySql 5.7
他们更改了文件,因此bind-address
现在位于:
/etc/mysql/mysql.conf.d/mysqld.cnf
而不是:
/etc/mysql/my.cnf
答案 3 :(得分:16)
如果您运行MAMP,请不要忘记允许访问(mySQL面板,选中“允许网络访问MySQL”)
答案 4 :(得分:11)
在服务器上安装Centos 7后,我遇到了这个问题。我无法通过远程计算机中的Mysql Workbench访问它。
问题出在防火墙配置中。最终,解决方案来自:
dpl_sol <- function() {
pwt <- pwt %>%
group_by(country) %>%
arrange(year) %>%
mutate(pct.chg = 100 *
((NY.GDP.MKTP.PP.CD - lag(NY.GDP.MKTP.PP.CD))/lag(NY.GDP.MKTP.PP.CD)))
}
bse_sol <- function() {
pwt$pct.chg2 <- NA # Column 6
for (i in unique(pwt$country)) {
# Assuming that years are incomplete
for (j in unique(pwt$year[pwt$country == i])) {
# As the DF is simple i simply used column numbers
pwt[which(
pwt$year == j &
pwt$country == i) +1 ,6] <- 100 * ((pwt[which(pwt$year == j &
pwt$country == i) +1 ,3]
- pwt[which(pwt$year == j &
pwt$country == i),3])
/ abs(pwt[which(pwt$year == j &
pwt$country == i),3]))
}
}
}
然后,重启防火墙:
sudo firewall-cmd --zone=public --permanent --add-service=mysql
答案 5 :(得分:1)
这可能是与防火墙相关的问题或尝试此操作:
转到服务器管理员 - &gt; MySQL - &gt;设置 - &gt;检查:允许网络连接
然后重启MySQL
答案 6 :(得分:1)
查看MySQL的“访问被拒绝错误的原因”。
http://dev.mysql.com/doc/refman/5.1/en/access-denied.html
Possibile是否在您的服务器上配置失败或其他程序使用相同的端口?或者服务器是否绑定在“127.0.0.1”上?尝试更改my.cnf文件。
答案 7 :(得分:0)
对于MacOS:
mysql -uroot -p
mysql> use mysql;
# View user's host
mysql> select 'host' from user where user='root';
# Update host to '%'
mysql> update user set host='%' where user='root';
mysql> flush privileges;
mysql> quit
vim /usr/local/etc/my.cnf
# Default Homebrew MySQL server config
[mysqld]
bind-address = 0.0.0.0
# Restart and reconnect MySQL
mysql.server restart
mysql -uroot -h0.0.0.0 -p