mysql.server 启动时出现 PID 错误?

Posted

技术标签:

【中文标题】mysql.server 启动时出现 PID 错误?【英文标题】:PID error on mysql.server start? 【发布时间】:2011-05-25 14:19:59 【问题描述】:

我刚刚尝试使用自制软件安装 mysql(在 Mac OS X 10.6 上),但我在第一个障碍中遇到了问题。尝试手动启动服务器(mysql.server start)时,出现以下错误:

. ERROR! Manager of pid-file quit without updating file.

很遗憾,我不确定要检查哪些错误日志或配置文件,因为我以前从未以这种方式安装过 MySQL。

【问题讨论】:

【参考方案1】:

我在通过自制软件安装时遇到了同样的问题。确保运行这些命令(在安装过程中列出但很容易错过):

unset TMPDIR
mysql_install_db

【讨论】:

谢谢先生。在执行以下操作之前,这似乎已经成功了: sudo chown -R whoami /usr/local 这会输出异常:2016-05-31 10:47:27 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize 2016-05-31 10:47:27 [ERROR] The data directory needs to be specified. 它适用于 MYSQL 5.7.13(通过 Homebrew 安装)。 unset TMPDIR && cd /usr/local/var/mysql/ && rm * && mysqld --initialize 请注意,这将清理您的数据。 感谢@Kixoms。我将 Fish 的代码修改为 set -e TMPDIR; cd /usr/local/var/mysql/; sudo rm -rf *; sudo mysqld --initialize。然后为了安全起见brew uninstall mysql 我没有/usr/local/var/mysql/的目录。【参考方案2】:

您可能需要确保以 root 用户身份运行 mysql ——否则它将无权写入 PID 文件(因此您收到错误)。

试试这个:

sudo mysql.server start

系统将提示您输入密码。 (这假设您的用户帐户具有“sudo”权限——它应该具有权限,除非它在 ​​OS X 中设置为受限用户帐户)。

这可能不是唯一的问题——但无论如何它应该能让你进入下一步。

【讨论】:

天啊!为什么mysql不能简单的说“你没有足够的权限”。 “错误!服务器退出而不更新 PID 文件”是一个极具误导性的错误消息。 @MayankJaiswal 因为没有创建 PID 文件的原因可能是权限之外的另一个原因。 @NewAlexandria 我同意无法读取 PID 文件的原因有很多。但为什么不尽可能具体呢?一个极端的例子:你的编译器非常努力地指出错误,而不仅仅是说“文件 foo.py 中的一些错误。无法编译。”。相反,它会说“第 36 行字符 26 上的解析错误,意外标识符:';' “ - 不是很甜蜜吗? 我认为你应该向开源仓库维护者提交补丁。【参考方案3】:

我在尝试使用自制软件在 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

【讨论】:

【参考方案4】:

以下两个命令应该可以解决您的问题。

> unset TMPDIR
> mysql_install_db --verbose --user=\`whoami\` --basedir="$(brew
--prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

【讨论】:

【参考方案5】:

没有其他真正的帮助,但以下工作:

$ 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

【讨论】:

由于某种原因,初始化数据库,删除它,然后再次初始化它对我有用。 我搜索了一段时间,但对我没有任何帮助,但您的回答解决了我的错误。谢谢【参考方案6】:

我在这里添加这个是因为我在安装其他软件后多次遇到这个问题。 MySQL 工作了好几天,然后突然出现这个错误。

当我安装某些东西(例如,elasticsearch 或 Puma Web 服务器)时似乎会发生这种情况。 MySql 权限再次恢复(返回给我,而不是_mysql)。不知道为什么。

MacOS Sierra 自制 1.0.5-43-g41b2df8 (2016-10-02) MySQL 5.7.15

所以我发现其中一个原因是 MySQL 存储数据库的位置的权限,默认情况下是在这里:

/usr/local/var/mysql

如果你查看那个文件夹,你会看到一个文件

<your computer name>.err

如果您查看该文件(more it 或 cat it),您可能会看到此错误:

[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

如果是这样,那么您知道这是权限问题。

如果您不关心,您可以通过运行 mysqld 来运行 MySQL(并保持该终端打开)。

如果你在乎:

ls -al /usr/local/var/mysql

您会注意到权限可能全部设置给您(您的用户帐户)。这意味着当您使用自制快捷方式 sudo mysql.server start 运行 mysql 时,mysql 无法挂载您的数据库 [即使您使用 sudo 以“管理员”模式运行]。

所以,更改权限:

$ sudo chown -R _mysql /usr/local/var/mysql
$ sudo chmod -R o+rwx /usr/local/var/mysql

然后就可以了。

【讨论】:

我在升级到 Sierra 后遇到了这个错误。我试图更改权限,但错误仍然存​​在......还有其他想法吗? 你可以尝试重新安装mysql 这很奇怪...我解决了将数据文件移动到另一个路径的问题...【参考方案7】:

看来,无论出于何种原因,我都无法在上面的 Immendes 下方发表评论,但在 10.8.2 和 mySQL 5.6.10 上,除了验证 db_install 和添加 my.cnf 之外,我还必须 chown -R myusername /tmp/mysql.sock。

似乎允许 mySQL 在用户下运行(就像我在 linux 上做的那样与 root 或 www 相对)在这方面并不是最好的主意(尽管 Homebrew 可以更新公式——超出我的范围和时间) .

【讨论】:

以上是关于mysql.server 启动时出现 PID 错误?的主要内容,如果未能解决你的问题,请参考以下文章

在启动MYSQL时出现问题:“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)”

插入大量数据时出现 mod_python/MySQL 错误:“OperationalError: (2006, 'MySQL server has gone away')”

启动apache时出现xampp错误说停止apache

解决mysql启动时报The server quit without updating PID file 的错误(转)

测试连接时出现PopSQL错误:Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)

打开 /proc/<PID>/stat 文件时出现权限被拒绝错误