我正在尝试按照本教程启用远程访问MySQL.问题是,my.cnf文件应该放在哪里?我正在使用Mac OS X Lion.
当我在测试套件中尝试连接到本地MySQL服务器时,它失败并显示错误:
OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")
Run Code Online (Sandbox Code Playgroud)
但是,我可以随时通过运行命令行mysql程序连接到MySQL
.A ps aux | grep mysql显示服务器正在运行,并
stat /tmp/mysql.sock确认该套接字存在.此外,如果我在except该异常的子句中打开调试器,我就能够可靠地连接完全相同的参数.
这个问题相当可靠地再现,但它看起来并不是100%,因为每次在蓝色的月亮中,我的测试套件确实在没有遇到此错误的情况下运行.当我试图用sudo dtruss它运行时没有重现.
所有客户端代码都是用Python编写的,但我无法确定它是如何相关的.
切换到使用主机127.0.0.1会产生错误:
DatabaseError: Can't connect to MySQL server on '127.0.0.1' (61)
Run Code Online (Sandbox Code Playgroud) 当我尝试使用命令行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)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试ssh <remote-ip>在本地连接MySQL时mysql -u root -p,没有问题.
这是user table(SELECT User, Host FROM mysql.user;)的一部分:
+------------------+----------------+
| User | Host |
+------------------+----------------+
| root | % |
| other_users | <remote-ip> |
| root | localhost |
+------------------+----------------+
Run Code Online (Sandbox Code Playgroud)
这是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) …Run Code Online (Sandbox Code Playgroud)