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

hof*_*ff2 4 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
Run Code Online (Sandbox Code Playgroud)

要么

/Library/StartupItems/MySQLCOM/MySQLCOM restart
Run Code Online (Sandbox Code Playgroud)

"似乎"工作 - 在那里,它给我一条消息,如"启动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.
Run Code Online (Sandbox Code Playgroud)

尝试了关于运行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
Run Code Online (Sandbox Code Playgroud)

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

我现在似乎有一些工作:mysqld_safe &成功运行MySQL服务器.仍然无效的是启动服务器的"正常"方法(启动项或首选项窗格)

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

hof*_*ff2 9

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

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

sudo chown -R root:wheel /Library/StartupItems/MySQLCOM
Run Code Online (Sandbox Code Playgroud)

也许您需要一个/etc/my.cnf包含此文件的文件:

[mysqld]
socket=/tmp/mysql.sock
datadir=/usr/local/mysql/data
Run Code Online (Sandbox Code Playgroud)

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

basedir=/usr/local/mysql 
datadir=/usr/local/mysql/data 
Run Code Online (Sandbox Code Playgroud)

(有关上述内容,请参阅无法在Mac OS 10.6 Snow Leopard中启动MySql)

这可能就足够了,但如果没有,请尝试确保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 chmoding和chmoding /usr/local/mysql/data目录以确保_mysql可以写入它.一旦你看起来好像启动,请mysql在终端输入.如果你得到一个MySQL命令提示符,一切都很好(输入exit以摆脱它) - 事实上,如果你得到的不是ol'"无法通过套接字连接到本地MySQL服务器"那么你可以得出结论MySQL服务器工作 - 关闭或终止服务器并继续前进.
  5. 接下来我们将安装启动项.运行MySQLStartupItem.pkg
  6. 通过输入来测试终端上的启动项sudo /Library/StartupItems/MySQLCOM/MySQLCOM start.它将为您提供一条消息,声称它正在启动服务器,但如果它不成功,它将不会给您任何指示,因此请mysql再次尝试进入以测试服务器是否正在运行.如果是这样,请输入sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop以停止服务器(并测试启动项可以停止服务器以及启动它:D)如果它不起作用,请尝试进行上述设置/usr/local/mysql/support-files/mysql.server.如果仍然没有这样做,请尝试顶部的位置sudo chown -R root:wheel /Library/StartupItems/MySQLCOM.
  7. 一旦工作,运行/安装MySQL.prefPane.这应该在底部附近的系统偏好设置中给你一个MySQL项目,如果你去那里,你应该看到一个可以单击的按钮,它将停止/启动MySQL服务器.尝试一下,如果它现在不起作用,我不知道还能告诉你什么.