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

时间:2015-11-17 22:06:55

标签: mysql macos server pid osx-elcapitan

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

class Account:
    def __init__(self, id):
        self.id = id
        id = 800
        id = self.id + id

acc = Account(123)
print(acc.id)

我一直在互联网上尝试很多解决方案:

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)

我尝试使用ERROR! The server quit without updating PID file (/usr/local/mysql/data/macServer.pid) ,重新启动服务器。删除mysql.server restart文件,我也尝试创建自己的PID文件,但它已被自动删除。

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

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

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

我认为有两种可能性:一方面可能是我没有完全卸载MySQL而且有些东西做坏事,另一方面是/etc/my.cnf文件的使用是问题。< / p>

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

编辑1:执行.plist的输出是:

sudo mysqld --user=mysql

我忘了把这个错误放在最初的问题上,这似乎是InnoDB上的一个错误(我不知道它是什么,如果有人可以解释我是什么,我会非常感激)。我也通过互联网查找了这个错误,我不记得我在哪里看到了解决方案,但我必须删除每个InnoDB日志文件(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 文件),令人惊讶的是我找不到任何日志文件所以我无法删除任何东西。我认为这可能是一个权限问题,但对用户有什么权限?

3 个答案:

答案 0 :(得分:3)

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

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

  1. 将perms重置为775(sudo chmod 775 / usr / local / var / mysql / aria_log_control`)
  2. 删除了日志文件(例如rm /usr/local/var/mysql/*.home.err
  3. 启动/停止mysqld
  4. Other sources声称你需要删除mysql目录。对我来说情况并非如此。

答案 1 :(得分:0)

根据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文件的权限,但这些权限在重新启动后无效。

答案 2 :(得分:0)

要检查的另一件事是mysql数据目录上的所有父目录的权限都是正确的。

对于前。检查/ var上的权限是否正确,/ var / lib /的权限是否正确。

在我的情况下,我的/ var权限搞砸了,用户&#34; mysql&#34;根本无法访问var目录。

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