【发布时间】:2014-10-23 21:53:43
【问题描述】:
我已经使用 macports 安装了 mysql55-server。
我可以通过以下方式成功启动服务器:
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql55-server.plist
并确认我正在运行正确的 mysql:
$ which mysql
/opt/local/lib/mysql55/bin/mysql
如果我运行$mysql,我可以连接成功。如果我然后运行:
mysql> show databases;
它显示了两个数据库。
使用 Sequel Pro,我可以通过套接字连接:
u: root
p: root
Socket: /opt/local/var/run/mysql55/mysqld.sock
连接和加载数据库就好了。
问题是通过 127.0.0.1 或 localhost 连接。
如果我尝试使用 Sequel Pro 中的标准连接进行连接,我会得到:
Unable to connect to host 127.0.0.1, or the request timed out.
Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).
MySQL said: Can't connect to MySQL server on '127.0.0.1' (61)
所以看来mysql服务器没有被识别为127.0.0.1。在我的主机文件中,我将本地主机列为 127.0.0.1
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
如果我尝试运行:
$ mysql -h 127.0.0.1 -u root
我明白了:
ERROR 2003 (HY000): 无法连接到“127.0.0.1”上的 MySQL 服务器 (61)
我在 Mavericks 上有相同的设置,效果很好。我已经在另一台计算机上更新到 Yosemite 并且遇到了这些问题。我试图交叉检查机器之间的所有设置。这一切似乎都匹配。为什么 localhost 127.0.0.1 没有连接,即使服务器正在运行?
更新
根据@Marc B 和从不恐慌,我更改了 my.cnf (/opt/local/etc/mysql55/my.cnf)。我删除了包含以从顶部的原始配置文件中提取数据并注释掉skip-networking:
[client]
port = 3306
socket = /opt/local/var/run/mysql55/mysqld.sock
default-character-set = utf8
[mysqld_safe]
socket = /opt/local/var/run/mysql55/mysqld.sock
nice = 0
default-character-set = utf8
[mysqld]
socket = /opt/local/var/run/mysql55/mysqld.sock
port = 3306
bind-address = 127.0.0.1
skip-external-locking
#skip-networking
character-set-server = utf8
[mysqldump]
default-character-set = utf8
重新启动mysql,它工作。
【问题讨论】:
-
你在mysql中开启网络支持了吗?它可能与 --skip-networking 一起运行,这会禁用 tcp 连接。 mysql 也应该在
netstat输出中显示为监听端口。和/或您已将 3306 端口设置为防火墙。
标签: php localhost macports osx-yosemite mysql-5.5