mysql.sock 未创建 OSX
Posted
技术标签:
【中文标题】mysql.sock 未创建 OSX【英文标题】:mysql.sock is not created OSX 【发布时间】:2011-06-18 08:07:40 【问题描述】:我在 OSX 上运行 mysql,现在当我重新启动计算机时,它不会创建 mysql.sock,这意味着我的所有连接都会给我一个错误 2002。
有人知道如何预防吗?
【问题讨论】:
MySQL 真的启动了吗?如果它正在启动,它将自动创建套接字。 你的mysql错误日志是怎么说的? 你解决过这个问题吗? 是的,发布了一个对其他人(包括我自己)有用的解决方案,如果您能标记正确的解决方案,将非常感激。 【参考方案1】:我在 Snow Leopard 上遇到了同样的问题,在 OS X 上,由于某种原因,套接字在错误的位置生成。
要在正确的位置生成套接字: 在 /etc 中使用以下行创建一个新文件“my.cnf”:
[mysqld]
socket=/var/mysql/mysql.sock
[client]
socket=/var/mysql/mysql.sock
然后重启mysqld:sudo /usr/local/mysql/bin/mysqld_safe
这将强制 MySQL 套接字文件在正确的位置生成,并且一切都应该正常工作。祝你好运!
【讨论】:
这个问题被重复了几十次,但你的问题是第一个真正帮助我的答案。它值得更多的支持。 /etc 文件在哪里?如果这是个愚蠢的问题,我很抱歉,但我知道那是什么! etc 是一个目录,而不是一个文件。它位于根 ("/") 目录下(因此是 "/etc")。 我遇到的另一个问题是运行 mysql 的用户没有编辑 /var/mysql/mysql.sock 的权限(我想是因为我使用 sudo 创建了它),所以我有在一切正常之前对其进行 chmod。实际上,在我修改它之前,MySQL 甚至都不会启动。 mysqld_safe 命令立即生效......你让我很开心。谢谢【参考方案2】:我使用 Mac OS 10.12 Sierra,我遇到了同样的 mysql 问题。我可以在我的文件系统中找到 mysql.sock。
解题方法:
1 删除 my.cnf
sudo rm -rf /etc/my.cnf
重启你的mysql服务器
brew services 重启 mysql
或
sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
你可以检查一下
sudo 丢失 -i tcp:3306
mysql 运行正常。
【讨论】:
【参考方案3】:我曾经在 Linux 机器上遇到过这个问题,我发现目录 (/var/run/mysqld) 不能被 mysql 运行的用户写入。如果我是你,我会检查的。
【讨论】:
【参考方案4】:我建议执行
sudo find / -name "mysql.sock"
确保文件不在任何地方。
在我的案例中,我以这种方式使用了带有变体套接字的命令 mysql
mysql --socket=/var/lib/mysql/mysql.sock
【讨论】:
【参考方案5】:我在运行 Sierra 的机器上重新启动 MySQL 时遇到了麻烦。每次我在重新启动机器后尝试连接时,我都会失去连接到我的 MySQL 实例的能力。根据这篇文章,我确定我的环境中确实没有 my.cnf 文件。我按照 DashRantic 的说明强制构建套接字文件。它似乎已经解决了这个问题。
【讨论】:
以上是关于mysql.sock 未创建 OSX的主要内容,如果未能解决你的问题,请参考以下文章