无法在OSX 10.6开发机器上运行mysql:“ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器'/tmp/mysql.sock'(2)”

时间:2011-01-27 21:06:33

标签: mysql osx-snow-leopard

我已经使用.dmg软件包在我的个人/开发机器上安装了MySQL,根据这里的说明:http://dev.mysql.com/doc/refman/5.5/en/macosx-installation-pkg.html包括安装启动项和首选项窗格。然而,我似乎根本无法使用MySQL。

运行:

/Library/StartupItems/MySQLCOM/MySQLCOM start

/Library/StartupItems/MySQLCOM/MySQLCOM restart

“似乎”工作 - 在那里,它给我一条消息,如“启动MySQL数据库服务器” - 但之后,我仍然不能在命令行进入mysql,或者在一个连接到它Rails 2.3.8应用程序在脚本/服务器中运行。我得到问题标题中表示的错误。

此外,MySQL首选项窗格似乎也不起作用。如果我单击“启动MySQL服务器”按钮,我会被要求输入密码,但没有任何反应 - 窗格继续说服务器已停止。

(我相信我以前安装了MacPorts版本的MySQL,而且过去某个时候也有可能是从源代码构建的 - 但我有理由相信我已经卸载了这些并删除了所有与我有关的文件,我可以找到。)

我也在终端尝试mysqld start。这是输出:

110127 15:40:28 [Warning] Can't create test file /usr/local/mysql-5.5.8-osx10.6-x86_64/data/Lucky-Charm.lower-test
110127 15:40:28 [Warning] Can't create test file /usr/local/mysql-5.5.8-osx10.6-x86_64/data/Lucky-Charm.lower-test
110127 15:40:28 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
110127 15:40:28 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
110127 15:40:28  InnoDB: Initializing buffer pool, size = 128.0M
110127 15:40:28  InnoDB: Completed initialization of buffer pool
110127 15:40:28  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

尝试了关于运行mysql_upgrade的消息,但这只是再次给我原始错误。


更新:

好的,我一直在追求这是一个权限问题的理论。看到datadir由root拥有,我知道-R它到_mysql。在答应迈克时,现在的情况如下:

$ ls -al /usr/local/mysql-5.5.8-osx10.6-x86_64
total 296
drwxr-xr-x  16 root    wheel     544 Dec  3 12:53 .
drwxrwxr-x  12 root    staff     408 Jan 27 14:38 ..
-rw-r--r--   1 root    wheel   17987 Dec  3 11:58 COPYING
-rw-r--r--   1 root    wheel   12388 Dec  3 11:58 INSTALL-BINARY
-rw-r--r--   1 root    wheel  113534 Dec  3 11:58 README
drwxr-xr-x  44 root    wheel    1496 Dec  3 12:53 bin
drwxr-xr-x   9 _mysql  wheel     306 Jan 27 16:46 data
drwxr-xr-x   4 root    wheel     136 Dec  3 12:53 docs
drwxr-xr-x  47 root    wheel    1598 Dec  3 12:53 include
drwxr-xr-x  12 root    wheel     408 Jan 27 14:38 lib
drwxr-xr-x   4 root    wheel     136 Dec  3 12:53 man
drwxr-xr-x  19 root    wheel     646 Jan 27 14:38 mysql-test
drwxr-xr-x   3 root    wheel     102 Dec  3 12:53 scripts
drwxr-xr-x  32 root    wheel    1088 Dec  3 12:53 share
drwxr-xr-x  28 root    wheel     952 Dec  3 12:53 sql-bench
drwxr-xr-x  16 root    wheel     544 Dec  3 12:53 support-files

我试图在终端中执行mysqld start因为它是唯一能给我带来任何看似有意义的错误消息输出的东西(参见https://gist.github.com/799436)但我在#mysql中告诉我这不是直接运行的(如果我尝试sudo mysqld start,我会收到一条消息,试图以root身份运行mysql。)

我似乎现在正在使用某些东西mysqld_safe &成功运行了MySQL服务器。 无法工作的是启动服务器的“常规”方法(启动项或首选项窗格)

...引导#mysql中的某个人告诉我,显然MySQL很好,这是启动项目的结果。

2 个答案:

答案 0 :(得分:9)

好的有几件事,主要是与权限/所有权有关,试图让二进制安装的MySQL工作得很好。

您可能需要确保启动项由root拥有:

sudo chown -R root:wheel /Library/StartupItems/MySQLCOM

也许你需要一个/etc/my.cnf文件:

[mysqld]
socket=/tmp/mysql.sock
datadir=/usr/local/mysql/data

您可能需要在/usr/local/mysql/support-files/mysql.server中填写这些变量(该行将显示空白值):

basedir=/usr/local/mysql 
datadir=/usr/local/mysql/data 

(关于上述内容,请参阅can't start MySql in Mac OS 10.6 Snow Leopard

这可能就足够了,但如果没有,请尝试确保mysql用户(_mysql)可以写入数据目录(拥有它并对其中的所有内容具有写权限)。

无论如何,现在首选项面板和启动项似乎对我有用。


在另一台机器上再次进行此操作后,我进行了一些编辑,并从昨天的回答中删除了一些不必要的内容。

总的来说,我建议你做的是让二进制安装的MySQL在OSX 10.6中运行良好。警告,您可能最终会删除您在前几个步骤中已经拥有的任何数据库,但因为这是针对您的开发计算机的,这应该没什么大不了的。如果必须,首先用mysqldump填充。

  1. 确保您现在没有运行mysql服务器:ps aux | grep mysql将向您显示其进程。使用mysqladmin shutdown停止它,或者如果因为某些东西被堵塞而无效,sudo kill进程号。
  2. 删除所有以前安装的mysql版本 - 检查port list installed,检查自制软件安装版本,sudo find / -name mysql查找源代码编译版本并删除它们,无论它需要什么。如果需要,您甚至可以通过删除/Library/StartupItems/MySQLCOM目录来删除启动项。
  3. 运行mysql-whatever-version.pkg安装包
  4. 在终端输入sudo mysqld_safe &进行测试。如果您收到“未找到命令”,请在路径中添加/usr/local/mysql/bin,然后重试。如果您收到任何可怕的错误消息,请检查上面所述的/etc/my.cnf文件,然后重试。如果它仍然不起作用,那么可能会尝试递归chowning并调整/usr/local/mysql/data目录以确保_mysql可以写入它。一旦您看到它启动正常,请在终端输入mysql。如果你得到一个MySQL命令提示符,一切都很好(输入exit以摆脱它) - 实际上,如果你得到的不是“无法通过套接字连接到本地MySQL服务器”然后你可以得出MySQL服务器工作的结论 - 关闭或终止服务器并继续前进。
  5. 接下来我们将安装启动项。运行MySQLStartupItem.pkg
  6. 输入sudo /Library/StartupItems/MySQLCOM/MySQLCOM start在终端测试启动项目。它将为您提供一条消息,声称它正在启动服务器,但如果它不成功,它将不会给您任何指示,因此请再次尝试进入mysql以测试服务器是否正在运行。如果是这样,请输入sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop以停止服务器(并测试启动项可以停止服务器以及启动它:D)如果它不起作用,请尝试在{{1}中进行上述设置}}。如果仍然没有这样做,请尝试顶部关于/usr/local/mysql/support-files/mysql.server
  7. 的位
  8. 一旦有效,运行/安装MySQL.prefPane。这应该在底部附近的系统偏好设置中给你一个MySQL项目,如果你去那里,你应该看到一个可以单击的按钮,它将停止/启动MySQL服务器。尝试一下,如果它现在不起作用,我不确定我能告诉你什么。

答案 1 :(得分:0)

删除旧的mac端口并在新的mac ports目录(新的/ opt / local)中安装mysql后,我遇到了同样的错误。

我通过在ports树中为mysql目录设置正确的权限来修复它:

chown -R _mysql:_mysql /opt/local/var/db/mysql5
chown -R _mysql:_mysql /opt/local/var/run/mysql5/
chmod -R 755 /opt/local/var/run/mysql5

我不确定是否需要chmod。当然,端口已经完成了创建_mysql用户和组的工作。