OS X El Capitan 上的 MySQL 5.7.9:错误服务器退出而不更新 PID 文件

Posted

技术标签:

【中文标题】OS X El Capitan 上的 MySQL 5.7.9:错误服务器退出而不更新 PID 文件【英文标题】:MySQL 5.7.9 on OS X El Capitan: ERROR The server quit without updating the PID file 【发布时间】:2016-02-19 11:22:33 【问题描述】:

我有一台装有 OS X Yosemite 的 Mac Pro 服务器,几天前我们升级到了 OS X El Capitan。当我尝试重新安装 mysql 时出现问题。我去MySQL官方页面下载了最新版本(5.7.9)的DMG包,安装正常。 安装并重新启动服务器后,MySQL 服务器没有自动启动,手动启动时我得到:

ERROR! The server quit without updating PID file (/usr/local/mysql/data/macServer.pid)

我在网上尝试了很多解决方案:

After MySQL install via Brew, I get the error - The server quit without updating PID file

http://coolestguidesontheplanet.com/mysql-error-server-quit-without-updating-pid-file/

PID error on mysql.server start?

MySQL pid ended (cannot start mysql)

我尝试使用mysql.server restart,重启服务器。删除 *.err 文件,我也尝试创建自己的 PID 文件,但它被自动删除。

一个可能的解决方案是完全卸载 MySQL 并重新安装:http://bytearrays.com/completely-uninstall-mysql-mac-osx/

另一个是修改.plist,但这个文件与提供的解决方案相同,因此无法解决我的问题。

我仍然无法启动 MySQL 服务器。

我认为有两种可能:一方面可能是我没有完全卸载 MySQL,并且有一些做坏事,另一方面是 /etc/my.cnf 文件的原因是问题。

我已经卡了 2 天了。我不知道如何运行服务器。

编辑1:执行sudo mysqld --user=mysql的输出为:

simidat-apps:~ admin$ sudo mysqld --user=mysql
Password:
2015-11-18  9:08:36 140735160397824 [Note] mysqld (mysqld 10.1.8-MariaDB) starting as process 81030 ...
2015-11-18  9:08:36 140735160397824 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2015-11-18  9:08:36 140735160397824 [ERROR] mysqld: File '/usr/local/var/mysql/aria_log_control' not found (Errcode: 13 "Permission denied")
2015-11-18  9:08:36 140735160397824 [ERROR] mysqld: Got error 'Can't open file' when trying to use aria control file '/usr/local/var/mysql/aria_log_control'
2015-11-18  9:08:36 140735160397824 [ERROR] Plugin 'Aria' init function returned error.
2015-11-18  9:08:36 140735160397824 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: The InnoDB memory heap is disabled
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: Memory barrier is not used
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: Compressed tables use zlib 1.2.5
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: Using CPU crc32 instructions
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-11-18  9:08:36 140735160397824 [Note] InnoDB: Completed initialization of buffer pool
2015-11-18  9:08:36 140735160397824 [ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode
2015-11-18  9:08:36 140735160397824 [ERROR] InnoDB: The system tablespace must be writable!
2015-11-18  9:08:36 140735160397824 [ERROR] Plugin 'InnoDB' init function returned error.
2015-11-18  9:08:36 140735160397824 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2015-11-18  9:08:36 140735160397824 [Note] Plugin 'FEEDBACK' is disabled.
2015-11-18  9:08:36 140735160397824 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2015-11-18  9:08:36 140735160397824 [ERROR] Unknown/unsupported storage engine: InnoDB
2015-11-18  9:08:36 140735160397824 [ERROR] Aborting

我忘了把这个错误放在最初的问题上,这似乎是 InnoDB 上的一个错误(我不知道它是什么,如果有人能解释一下它是什么,我将非常感激)。我也在互联网上寻找这个错误,我不记得我在哪里看到了解决方案,但我必须删除每个 InnoDB 日志文件(ib*files),令人惊讶的是我找不到任何日志文件所以我不能' t 删除任何东西。我认为这可能是权限问题,但是什么用户有什么权限?

【问题讨论】:

请启动 #mysqld --user=mysql 并发布输出,或者 #mysqld --user=root 我用这样的命令结果编辑了问题。 从日志看来,ibdata1 文件或包含它的目录中的权限似乎是错误的。 【参考方案1】:

另外要检查的是mysql数据目录上面所有父目录的权限是否正确。

例如。检查 /var 的权限是否正确,以及 /var/lib/ 的权限是否正确。

在我的情况下,我的 /var 权限被搞砸了,用户“mysql”根本无法访问 var 目录。

进行健全性检查的一种方法是切换到普通用户,并确保普通用户可以 cd 到 /var 和 /var/lib(假设 mysql 数据目录在 /var/lib 内)。

【讨论】:

【参考方案2】:

按照the answer listed on github,把mysqld用户改成你的用户:-

创建/usr/local/etc/my.cnf.d/user.cnf

并添加以下行:-

[mysqld]
user=YOUR_USER_NAME

OSX Sierra 10.12.1 / MariaDB 10.1.19

https://github.com/Homebrew/legacy-homebrew/issues/50670

(我尝试更改 aria_log_control 文件的权限,但这些在重启后无法幸免)。

【讨论】:

【参考方案3】:

您的问题实际上不是 Mysql,而是 MariaDB 的方案。问题在于aria_log_control 文件的权限。

我通过brew 安装了mysql / mariadb,因此我:

    将权限重置为 775 (sudo chmod 775/usr/local/var/mysql/aria_log_control`) 已删除日志文件(例如rm /usr/local/var/mysql/*.home.err) 启动/停止 mysqld

Other sources 声称您需要删除 mysql 目录。我不是这种情况。

【讨论】:

以上是关于OS X El Capitan 上的 MySQL 5.7.9:错误服务器退出而不更新 PID 文件的主要内容,如果未能解决你的问题,请参考以下文章

OS X El Capitan 上的 MySQLdb 错误

制作 Mac OS X El Capitan 的U盘引导安装

在 Mac OS X Yosemite/El Capitan 上自动启动 MySQL 服务器

OS X 10.11 El Capitan 上的蓝牙低功耗延迟/延迟

在 Mac OS X El Capitan 10.11.4 上安装 MySQL 5.7

OS X El Capitan 上的 Angular 2 教程在浏览器中返回“Cannot GET /”