我无法与 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 进行了任何优化并更改了任何变量的值。如果是,请也发布相同的内容。