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