iptables -L -n

iptables -L -n

我无法与 MySQL 建立远程连接。我可以从我的电脑远程登录到现有服务器上的 3306,但当我尝试在新服务器上执行相同操作时,它会挂起几分钟然后返回

# mysql -utest3 -h [server ip] -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '[server ip]' (110)

这是来自服务器的一些输出。

# nmap -sT -O localhost -p 3306
...
PORT     STATE  SERVICE
3306/tcp closed mysql
...


# netstat -anp | grep mysql
tcp        0      0 [server ip]:3306        0.0.0.0:*                   LISTEN      6349/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     12286  6349/mysqld         /DATA/mysql/mysql.sock

# netstat -anp | grep 3306
tcp        0      0 [server ip]:3306    0.0.0.0:*        LISTEN      6349/mysqld
unix  3      [ ]         STREAM     CONNECTED     3306   1411/audispd

# lsof -i TCP:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  6349 mysql   10u  IPv4  12285      0t0  TCP [domain]:mysql (LISTEN)

我在跑步...

操作系统 CentOS 版本 5.8 (最终版) mysql 5.5.28 (Remi)

注意:与 mysql 的内部连接工作正常。

我已经禁用了 IPtables,该盒子没有其他防火墙,它在端口 80 上运行 Apache,并且 ssh 没有问题。

已经按照本教程进行了操作 -http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

我已经在 my.cnf 中绑定了 IP 地址

user=mysql
bind-address = [sever ip]
port=3306

我甚至从头开始删除数据存储中的 mysql 文件夹并运行

mysql_install_db --datadir=/DATA/mysql --force

然后按照手册重新创建所有用户......

http://dev.mysql.com/doc/refman/5.5/en/adding-users.html

我已经创建了一个测试用户

CREATE USER 'test'@'%' IDENTIFIED BY '[password]';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

所以我能看到的是端口并没有真正开放。我还能在哪里查看?

谢谢

答案1

# nmap -sT -O localhost -p 3306
...
PORT     STATE  SERVICE
3306/tcp closed mysql
...

在上面的命令中,您看到端口关闭,因为您的 mysql 在特定 IP 上运行,而不是在本地主机上运行。因此,当您在服务器上运行此命令时,它会显示端口已关闭。所以这是有道理的。如果您希望它起作用,您需要将 bind-ip 替换为值 0.0.0.0

因此,您能否用 server-ip 替换 localhost 并在此处发布输出。

另外,我知道您已经禁用了防火墙,但是如果您能帮助我使用以下几个命令,那就太好了:

iptables -L -n

猫/etc/hosts.deny

另外,您是否对 mysql 进行了任何优化并更改了任何变量的值。如果是,请也发布相同的内容。

相关内容