无法连接到错误61的远程MySQL服务器

时间:2013-04-23 05:49:31

标签: mysql

当我尝试使用命令行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 

那么,问题是什么?

8 个答案:

答案 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