首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中为本地主机服务器使用别名

在MySQL中为本地主机服务器使用别名
EN

Stack Overflow用户
提问于 2011-12-12 02:19:57
回答 2查看 5.3K关注 0票数 5

当我在办公室的时候,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';

我也关闭了防火墙进行测试,这并没有什么不同。那会是什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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。如果您找到像这样的行

代码语言:javascript
复制
skip-networking

将其注释掉:

代码语言:javascript
复制
#skip-networking

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

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

代码语言:javascript
复制
mysql> show global variables like '%socket%';
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| socket        | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+
票数 6
EN

Stack Overflow用户

发布于 2012-01-12 05:06:20

如果您正在使用MAMP Pro并遇到问题,您可以简单地取消选中MySQL服务器设置中标记为"Allow local access only“的复选框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8466320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档