在MySQL中为localhost服务器使用别名
当我在办公室时,MySQL运行在一个名为“mysqldev”的特定服务器上。在我的在MySQL中为localhost服务器使用别名,mysql,localhost,Mysql,Localhost,当我在办公室时,MySQL运行在一个名为“mysqldev”的特定服务器上。在我的/etc/hosts文件中,我已将“mysqldev”设置为与此服务器的IP匹配。到目前为止,一切顺利。然而,当我不在办公室使用笔记本电脑时,我想使用我的本地MySQL数据库,因为我克隆了那里的特定数据库,并且没有互联网连接到办公室数据库。我不想更改脚本,而是想更改笔记本电脑的配置。因此,我在笔记本电脑上设置了/etc/hosts: 127.0.0.1 localhost mysqldev 然而,由于某些原因,这并
/etc/hosts
文件中,我已将“mysqldev”设置为与此服务器的IP匹配。到目前为止,一切顺利。然而,当我不在办公室使用笔记本电脑时,我想使用我的本地MySQL数据库,因为我克隆了那里的特定数据库,并且没有互联网连接到办公室数据库。我不想更改脚本,而是想更改笔记本电脑的配置。因此,我在笔记本电脑上设置了/etc/hosts
:
127.0.0.1 localhost mysqldev
然而,由于某些原因,这并没有像预期的那样起作用。如果我使用localhost上的服务器登录MySQL,一切都很好。但是当我尝试登录到mysqldev
服务器(与localhost相同的IP)时,我得到了错误:
警告:mysqli::mysqli()[mysqli.mysqli]:[2002]连接被拒绝(试图通过tcp://mysqldev:3306)
(这是使用PHP,但使用命令行时也是相同的错误)
在系统上设置的用户具有登录此服务器的特定权限:
创建由“123”标识的用户“test”@“mysqldev”代码>
将testdb.*上的所有权限授予“test”@“mysqldev”代码>
我还关闭了防火墙进行测试,这并没有什么区别。可能是什么?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 |
+---------------+-----------------------------+
如果您使用的是MAMP Pro,并且遇到问题,您可以在MySQL服务器设置中简单地取消选中标有“仅允许本地访问”的框