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 文件的主要内容,如果未能解决你的问题,请参考以下文章
制作 Mac OS X El Capitan 的U盘引导安装
在 Mac OS X Yosemite/El Capitan 上自动启动 MySQL 服务器
OS X 10.11 El Capitan 上的蓝牙低功耗延迟/延迟