在MySQL中为localhost服务器使用别名

在MySQL中为localhost服务器使用别名,mysql,localhost,Mysql,Localhost,当我在办公室时,MySQL运行在一个名为“mysqldev”的特定服务器上。在我的/etc/hosts文件中,我已将“mysqldev”设置为与此服务器的IP匹配。到目前为止,一切顺利。然而,当我不在办公室使用笔记本电脑时,我想使用我的本地MySQL数据库,因为我克隆了那里的特定数据库,并且没有互联网连接到办公室数据库。我不想更改脚本,而是想更改笔记本电脑的配置。因此,我在笔记本电脑上设置了/etc/hosts: 127.0.0.1 localhost mysqldev 然而,由于某些原因,这并

当我在办公室时,MySQL运行在一个名为“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服务器设置中简单地取消选中标有“仅允许本地访问”的框