gpt4 book ai didi

mysql - 在 MySQL 中使用本地主机服务器的别名

转载 作者:可可西里 更新时间:2023-11-01 07:04:42 24 4
gpt4 key购买 nike

当我在办公室时,MySQL 在名为“mysqldev”的特定服务器上运行。在我的 /etc/hosts 文件中,我设置了“mysqldev”以匹配该服务器的 IP。到目前为止,一切都很好。然而,当我不在办公室使用我的笔记本电脑时,我想使用我的本地 MySQL 数据库,因为我在那里克隆了特定的数据库并且没有互联网连接到办公室数据库。我不想更改我的脚本,而是我的笔记本电脑配置。所以在我的笔记本电脑上,我在 /etc/hosts 中设置:

127.0.0.1 localhost mysqldev

但是,由于某些原因,这并没有按预期工作。如果我使用位于本地主机的服务器登录到 MySQL,一切都很好。但是当我尝试登录 mysqldev 服务器(与本地主机相同的 IP)时,出现错误:

警告:mysqli::mysqli() [mysqli.mysqli]:[2002] 连接被拒绝(尝试通过 tcp://mysqldev:3306 连接)

(这是用PHP,但是用命令行还是一样的错误)

系统上设置的用户有特定权限登录此服务器:

创建用户 'test'@'mysqldev' IDENTIFIED BY '123';

GRANT ALL PRIVILEGES ON testdb.* TO '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

然后重启服务器。然后再次尝试连接。


要找出您的套接字在哪里,请通过本地主机连接并发出以下命令:

mysql> show global variables like '%socket%';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| socket | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+

关于mysql - 在 MySQL 中使用本地主机服务器的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8466320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com