当我尝试通过 telnet 连接到 mysql 服务器时出现以下错误:
telnet localhost 3306
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection timed out
我也尝试使用 127.0.0.1 进行 telnet,但收到相同的错误消息。但是一旦进入服务器,hostname
我就可以连接。mysql -u username -p
以下是netstat的结果:
netstat -na | grep mysql
unix 2 [ ACC ] STREAM LISTENING 4540495 /var/run/mysqld/mysqld.sock
netstat -na | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
可能存在哪些问题?如果您需要更多详细信息,我可以毫无问题地提供。
多谢。
答案1
您能连接吗:
mysql -h127.0.0.1 -u username -p
如果没有,请检查你的服务器是否已启用“skip-networking”:
如果服务器以--skip-networking启动,它将根本不接受TCP / IP连接。源码
这表明 127.0.0.1 不起作用,但 localhost 可以。在 mysql 中,localhost 和 127.0.0.1 是不同的主机。
需要进一步检查的事项:
您是否正在运行默认端口 (3306)?检查您的 my.cnf 或执行
mysqladmin -h localhost -p variables | grep port
如果您在 Linux 下运行并且启用了安全增强型 Linux (SELinux),请确保已禁用 mysqld 进程的 SELinux 保护。
答案2
我遇到了同样的问题,但我解决了。我使用 Mac pro 和 sequel Pro 作为 mysql 客户端,套接字 localhost 连接成功,但标准 tcp/ip 连接失败!
我使用 cmd 检查了正在运行的端口:
mysqladmin -h localhost -u root -p variables | grep port
这是我的结果状态:
wangxiaodeMacBook-Pro:~ wangxiao$ mysqladmin -h localhost -u root -p variables | grep port
Enter password:
| innodb_support_xa | ON |
| large_files_support | ON |
| port | 3307 |
| report_host | |
| report_password | |
| report_port | 3307 |
| report_user |
它移植的是 3307 而不是默认的 3306,曾经安装了另一个 mysql 服务器。所以更改它并解决。感谢@DTest 的回答。