我有一台服务器试图连接到本地网络外部托管的MySQL数据库。我正在尝试使用公共IP地址连接到它。
在命令行中测试连接会给我这个错误:
ERROR 2003 (HY000): Can't connect to MySQL server on '[ip_address]' (146)
PDO给了我同样的错误。在任何情况下,连接都可以在本地和同一网络中正常工作,这令我难以理解。
MySQL服务器已修改其绑定地址,因此它接受远程连接。 MySQL服务器还有一个具有适当权限的用户。但无论如何,看起来我甚至无法在第一时间开始连接。
我是否需要添加my.cnf值以让MySQL接受来自本地网络外部的请求?
感谢。
答案 0 :(得分:4)
要检查的事项:
my.cnf
文件是否配置为允许来自localhost
127.0.0.1
IP以外的任何其他连接 - 尽管您更有可能获得拒绝访问的响应,而不是无法连接。答案 1 :(得分:2)
从该特定主机向用户授予权限。或者从任何主机访问它使用%(即外卡)作为主机。
答案 2 :(得分:1)
听起来好像客户端无法连接。此页面提供了有关如何缩小问题范围的一些建议:
http://dev.mysql.com/doc/refman/5.1/en/can-not-connect-to-server.html
如果您尝试telnet到服务器上的端口3306会发生什么?你应该从MySQL得到一个提示。
答案 3 :(得分:0)
使用命令
为所有用户授予权限在上授予所有权限。根目录' @' localhost'通过' root'识别WITH GRANT OPTION; 在上授予所有特权。以及' root' @'%'通过' root'识别WITH GRANT OPTION; FLUSH PRIVILEGES;
现在去你的" my.cnf"文件。对于ubuntu使用(sudo find / -type f -name" my.cnf")
注释掉" bind-address = 127.0.0.1"
使用for ubuntu重新启动mysql" sudo service mysql restart"
答案 4 :(得分:0)
我遇到了同样的问题,给出的大多数解决方案是:
但是在我的情况下,数据库托管在远程服务器上,而路由器需要端口转发。