当我在办公室的时候,MySQL在一个叫做"mysqldev“的特定服务器上运行。在我的/etc/hosts文件中,我将"mysqldev“设置为与此服务器的IP相匹配。到现在为止还好。然而,当我不在办公室使用我的笔记本电脑时,我想使用我的本地MySQL数据库,因为我在那里克隆特定的数据库,并且没有连接到办公室数据库的互联网。我不想更改我的脚本,而是我的笔记本电脑配置。因此,在我的笔记本电脑上,我将/etc/hosts设置为
127.0.0.1 localhost mysqldev
然而,由于某些原因,这并不能像预期的那样工作。如果我使用本地主机上的服务器登录到MySQL,一切正常。但是,当我尝试登录mysqldev服务器(与本地主机相同的IP )时,我收到以下错误:
Warning: mysqli::mysqli() [mysqli.mysqli]: [2002] Connection refused (trying to connect via tcp://mysqldev:3306)
(这是使用PHP,但使用命令行是相同的错误)
在系统上设置的用户具有登录此服务器的特定权限:
CREATE USER 'test'@'mysqldev' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON testdb.* TO 'test'@'mysqldev';
我也关闭了防火墙进行测试,这并没有什么不同。那会是什么呢?
发布于 2011-12-12 03:01:07
MySQL客户端库尝试猜测如何连接到数据库。当您指定localhost作为主机名时,它假定您使用的是本地套接字(在您的计算机中搜索名为mysql.sock的文件,该文件可能位于/var/lib/mysql或/usr/local/mysql/下。
但是,当您使用其他任何内容时,比如ip地址、不同的主机名,或者在您的示例中使用mysqldev,它会尝试通过tcp连接到主机。从错误消息看,您的本地mysql服务器似乎没有侦听tcp端口3306 ( mysql的默认端口)
检查您的my.cnf (可能是/etc/my.cnf或/etc/mysql/my.cnf)是否允许使用tcp。如果您找到像这样的行
skip-networking将其注释掉:
#skip-networking并重新启动服务器。然后再次尝试连接。
要找出您的套接字在哪里,请通过localhost连接并发出以下命令:
mysql> show global variables like '%socket%';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| socket | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+发布于 2012-01-12 05:06:20
如果您正在使用MAMP Pro并遇到问题,您可以简单地取消选中MySQL服务器设置中标记为"Allow local access only“的复选框。
https://stackoverflow.com/questions/8466320
复制相似问题