我刚刚尝试使用自制程序(在 Mac OS X 10.6 上)安装 MySQL,但我在第一个障碍时遇到了问题。当尝试手动启动服务器(mysql.server start)时,出现以下错误:
. ERROR! Manager of pid-file quit without updating file.
不幸的是,我不确定要检查哪些错误日志或配置文件,因为我以前从未以这种方式安装过 MySQL。
我在通过自制程序安装时遇到了同样的问题。确保运行这些命令(这些命令在安装过程中列出,但很容易错过):
unset TMPDIR
mysql_install_db
您可能需要确保您以
root
用户身份运行 mysql - 否则它将无权写入 PID 文件(因此您会收到错误)。
试试这个:
sudo mysql.server start
系统将提示您输入密码。 (这假设您的用户帐户具有“sudo”权限——它应该如此,除非它在 OS X 中设置为受限用户帐户)。
这可能不是唯一的问题 - 但无论如何它应该让您进入下一步。
我在尝试使用自制软件在 Lion 中安装 MySQL 5.5.15 时遇到了同样的问题,并通过以下方式解决了该问题:
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
并创建文件 ~/my.cnf
内容:
[mysqld]
basedir=/usr/local/Cellar/mysql/5.5.15
datadir=/usr/local/var/mysql
basedir - 应该是你当前的 MySQL 安装目录 datadir - 应该是 MySQL 数据的位置
您可以通过在“brew install mysql”搜索过程中查看 make 命令来找出该位置:
-DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/mysql/5.5.15 -DMYSQL_DATADIR=/usr/local/var/mysql -DINSTALL_MANDIR=/usr/local/Cellar/mysql
其中 DCMAKE_INSTALL_PREFIX = basedir 且 DMYSQL_DATADIR = datadir
没有其他真正有帮助的,但以下有效:
$ ps aux | grep mysql
tagir 27260 0.0 1.0 3562356 175120 ?? S 2:52PM 0:00.42 mysqld --skip-grant-tables
tagir 42704 0.0 0.0 2434840 784 s000 S+ 3:04PM 0:00.00 grep mysql
$ kill 27260
# Careful! This might erase your existing data
$ rm -rf /usr/local/var/mysql
$ mysqld --initialize
$ mysql.server start
以下两个命令应该可以解决您的问题。
> unset TMPDIR
> mysql_install_db --verbose --user=\`whoami\` --basedir="$(brew
--prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
我在这里添加这个是因为我在安装其他软件后多次遇到这个问题。 MySQL 工作正常几天,然后突然出现此错误。
当我安装某些东西(例如elasticsearch或Puma网络服务器)时似乎会发生这种情况。 MySql 权限再次恢复(恢复给我,而不是
_mysql
)。不知道为什么。
所以我发现造成这种情况的原因之一是MySQL存储数据库的位置的权限,默认情况下是在这里:
/usr/local/var/mysql
如果您查看该文件夹,您将看到一个文件
<your computer name>.err
如果您查看该文件内部(
more
它或cat
它),您可能会看到此错误:
[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
如果是这样,那么您就知道这是权限问题。
如果你不在乎,你可以通过运行
mysqld
(并保持该终端打开)来运行 MySQL。
如果您关心:
ls -al /usr/local/var/mysql
您会注意到权限可能全部设置给您(您的用户帐户)。这意味着当您使用 homebrew 快捷方式运行 mysql 时,它无法挂载您的数据库
sudo mysql.server start
[即使您使用 sudo 在“管理”模式下运行]。
因此,更改权限:
$ sudo chown -R _mysql /usr/local/var/mysql
$ sudo chmod -R o+rwx /usr/local/var/mysql
然后就可以了。
无论出于何种原因,我似乎无法在上面的 Immendes 下面发表评论,但是在 10.8.2 上使用 mySQL 5.6.10,除了验证 db_install 并添加 my.cnf 之外,我还必须 chown -R myusername /tmp /mysql.sock。
看来允许 mySQL 在用户下运行(与我在 Linux 上所做的相对于 root 或 www 而言)在这方面并不是最好的主意(尽管 Homebrew 可以更新公式——超出了我的范围和时间)。
brew postinstall mysql
delete document /opt/homebrew/var/mysql
brew postinstall mysql