MySQL pid 结束(无法启动 mysql)

Posted

技术标签:

【中文标题】MySQL pid 结束(无法启动 mysql)【英文标题】:MySQL pid ended (cannot start mysql) 【发布时间】:2012-05-23 13:31:10 【问题描述】:

我有一个全新安装的 mysql (mysql-5.5.24-osx10.6-x86_64)。我在使用 Mac Pro 四核的 Lion (OS 10.7.4)。我安装了 MySQL GUI 安装程序,还安装了 pref 窗格和启动项。

但是当我跑步时:

sudo ./bin/mysqld_safe

我收到这条消息:

120515 17:58:19 mysqld_safe Logging to '/usr/local/mysql-5.5.24-osx10.6-x86_64/data/Dannys-Mac-Pro.local.err'.
120515 17:58:19 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql-5.5.24-osx10.6-x86_64/data
120515 17:58:20 mysqld_safe mysqld from pid file /usr/local/mysql-5.5.24-osx10.6-x86_64/data/Dannys-Mac-Pro.local.pid ended

我也无法从首选项窗格启动 MySQL。

根据今天的谷歌搜索和研究时间,这是我迄今为止所尝试的:

权限问题?

This:

cd /usr/local
sudo chown mysql mysql
sudo chown mysql mysql-5.5.24-osx10.6-x86_64
sudo chown _mysql mysql
sudo chown _mysql mysql-5.5.24-osx10.6-x86_64

sudo chown -R /usr/local/mysql-5.5.24-osx10.6-x86_64/
sudo chown -R /usr/local/mysql

This:

sudo chown -R root:wheel /Library/StartupItems/MySQLCOM

链接问题?

This:

在 /usr/local/mysql/support-files/mysql.server -- 我做了:

basedir="/usr/local/mysql"
datadir="/usr/local/mysql/data"

在文件 /etc/rc.common 的末尾添加以下行: /usr/local/mysql/bin/mysqld_safe --user=mysql &

This:

sudo ln -s /usr/local/mysql-5.5.24-osx10.6-x86_64 /usr/local/mysql

我也尝试了removal process here 并重新安装了,但这似乎并没有什么不同。我还在 OS X 中启动了 Activity Monitor,以查看是否有任何其他 mySQL 进程偶然运行,但实际上没有。

以上没有任何效果,所以我有点束手无策。以下是来自 .err 文件的日志:

/usr/local/mysql-5.5.24-osx10.6-x86_64/data/Dannys-Mac-Pro.local.err

120515 18:07:43 mysqld_safe mysqld from pid file /usr/local/mysql-5.5.24-osx10.6-x86_64/data/Dannys-Mac-Pro.local.pid ended
120515 18:13:01 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql-5.5.24-osx10.6-x86_64/data
120515 18:13:01 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql-5.5.24-osx10.6-x86_64/data/ is case insensitive
120515 18:13:01 [Note] Plugin 'FEDERATED' is disabled.
/usr/local/mysql-5.5.24-osx10.6-x86_64/bin/mysqld: Table 'mysql.plugin' doesn't exist
120515 18:13:01 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120515 18:13:01 InnoDB: The InnoDB memory heap is disabled
120515 18:13:01 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120515 18:13:01 InnoDB: Compressed tables use zlib 1.2.3
120515 18:13:01 InnoDB: Initializing buffer pool, size = 128.0M
120515 18:13:01 InnoDB: Completed initialization of buffer pool
120515 18:13:01 InnoDB: highest supported file format is Barracuda.
120515 18:13:01  InnoDB: Waiting for the background threads to start
120515 18:13:02 InnoDB: 1.1.8 started; log sequence number 1595675
120515 18:13:02 [ERROR] /usr/local/mysql-5.5.24-osx10.6-x86_64/bin/mysqld: unknown option '--skip-locking'
120515 18:13:02 [ERROR] Aborting

120515 18:13:02  InnoDB: Starting shutdown...
120515 18:13:03  InnoDB: Shutdown completed; log sequence number 1595675
120515 18:13:03 [Note] /usr/local/mysql-5.5.24-osx10.6-x86_64/bin/mysqld: Shutdown complete

120515 18:13:03 mysqld_safe mysqld from pid file /usr/local/mysql-5.5.24-osx10.6-x86_64/data/Dannys-Mac-Pro.local.pid ended

更新:我将同一台机器从 Snow Leopard 升级到 Mountain Lion 10.8.1,并且 MySQL 现在在升级后工作得非常好,我不需要做任何额外的事情。

【问题讨论】:

[ERROR] /usr/local/mysql-5.5.24-osx10.6-x86_64/bin/mysqld: unknown option '--skip-locking' - /usr/local/mysql-5.5.24-osx10.6-x86_64/my.cnf 是否包含类似skip-locking 的内容?如果没有,bin/mysqld_safe (这只是一个 shell 脚本)呢?如果是,请将其删除并重试。 @DannyEnglander 这个问题我已经有 2 天了 - 你是怎么处理的? @sscirrus 不幸的是,我不得不恢复到 OS X 10.6 Snow Leopard,这解决了这个问题。我对无法在 Lion 上进行这项工作感到非常失望。可能是我经历过的最令人沮丧的事情之一...... @DannyEnglander 我非常希望有人能找到解决方案。我在 Snow Leopard 上遇到了这个问题,我昨晚解决它的唯一方法是让我的电脑回到两周前。这里也很令人沮丧。 更新:我将同一台机器从 Snow Leopard 升级到 Mountain Lion 10.8.1 并且 MySQL 现在在升级后工作得非常好,我不需要做任何额外的事情。 【参考方案1】:

正如@AndPy 所说,我也一样,如果你ls -l /usr/local/var/mysql 你可以看到文件COMPUTER-NAME.local.err 是由_mysql 或类似的......在这种情况下,只需删除文件和mysql.server start 将创建您的用户拥有的新文件,并且这次将正常启动:)

如果该文件已由您的用户拥有,这将无济于事,您必须谷歌更多:(

【讨论】:

【参考方案2】:

如果你想让这件事完全正常工作,请执行以下操作:

您需要先卸载 mysql,但在执行此操作之前,请确保您备份了所有数据库。

brew remove mysql

然后您需要确保某些文件已卸载,制作以下命令的批处理脚本并运行它:

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/var/mysql
sudo rm -rf /usr/local/mysql*
sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /private/var/db/receipts/*mysql*

使用您喜欢的编辑程序转到/etc/hostconfig 并删除MYSQLCOM=-YES- 这一行

然后运行brew cleanup,然后使用brew install mysql安装mysql

完成此操作后,您可能会再次遇到相同的错误。前往文件夹cd /usr/local/var/mysql/。里面应该有一个文件叫localhost.local.err

运行cat ./localhost.local.err 并查看文件。您应该会看到类似以下内容:

2018-03-24 15:41:49 140735679804288 [ERROR] Can't start server: Bind on TCP/IP port. Got error: 48: Address already in use

2018-03-24 15:41:49 140735679804288 [ERROR] Do you already have another mysqld server running on port: 3306 ?

如果你这样做了,运行命令sudo lsof -i :3306,你可能会得到这样的结果:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 74 _mysql 20u IPv6 0xXXXXXXXXXXXXX 0t0 TCP *:mysql (LISTEN)

这意味着 mysql 已经在运行并监听 3306 端口,你需要杀死它。使用top 杀死程序或仅使用活动监视器将其杀死。无论哪种方式,一旦完成,请返回 cd /usr/local/var/mysql/ 并删除文件夹 localhost.local.err

完成后运行 mysql.server start ,您应该得到以下信息:

180324 15:46:18 mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql SUCCESS!

恭喜。我已经尝试解决这个问题一周了,这是一个很容易解决的问题,我只是想通了。我讨厌自己。

【讨论】:

sudo rm -rf /usr/local/var/mysql我所有的数据库都在这个目录下,我不想删除它们…… @pilat 只是进行备份。这在 macOS High Sierra 上运行良好。 @AhmedHashem 是的,是的。这实际上是我在帖子中给出的第一条指令。【参考方案3】:

仅删除 /usr/local/var/mysql/ 中的 mysql-bin.index 文件对我有帮助。

【讨论】:

【参考方案4】:

我的答案与其他人非常相似,但略有不同,这主要适用于 bitnami mamp 堆栈。我的解决方法是:

sudo chown -R mysql mysql/

mysql/ 目录是位于Applications/<mampstack-version>/ 中的目录

上面将mysql设置为mysql目录的所有者,递归到其他目录。

【讨论】:

在我的 Linux mint 上,我必须做两件事:sudo mkdir /var/run/mysqldsudo chown -R mysql /var/run/mysqld【参考方案5】:

试一试……

    导航到问题的父目录cd YOURPATH/usr/local/mysql rm -rf *.local.err(删除文件) touch YOURUSERNAME.local.pid(生成新的 *.local.pid 文件,引发的错误抱怨) cd 回到你的项目并使用mysql.server start重启mysql

【讨论】:

【参考方案6】:

更新到 OS X Mavericks 后我遇到了同样的问题。

启动 MySQL 。错误!服务器退出但不更新PID文件

就像Redrick 和AndPy 提到的,我还必须重命名(实际上我删除了文件)位于$ cd /usr/local/var/mysql 的错误文件。我的错误文件名为localhost.err。使用$ rm localhost.err 删除文件后,我终于可以使用$ mysql.server start 再次启动MySQL。

【讨论】:

【参考方案7】:

我在 redmine bitnami 堆栈上发现了这个错误,因为目录数据中的文件所有者不正确。

检查目录/mysql/data/的所有者必须是'mysql'用户

希望对您有所帮助。

【讨论】:

宾果游戏。如果您使用的是 bitnami 灯堆栈,请 chown mysql opt/bitnami/mysql/data -R(您必须以 root 身份登录)。然后用 $ cd /opt/bitnami $ sudo ./ctlscript.sh restart mysql 启动mysql【参考方案8】:

我遇到了同样的问题。

在 /usr/local/var/mysql 中,我找到了一个格式为 COMPUTER-NAME.local.err 的文件。只需更改该文件名即可解决问题。我现在可以使用

启动 mysql 服务器

mysql.server 启动

【讨论】:

【参考方案9】:

在为我的 MAC OS 10.7.5 安装 mysql 最新版本 mysql-5.6.10-osx10.7-x86.dmg 时,我遇到了同样的问题。以下是我的解决方案。 一、删除安装的mysql

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*

然后,获取mysql-5.1.68-osx10.6-x86.dmg,安装这个旧版本,完成!

【讨论】:

如果你想保留你的数据库,那么你应该先备份/usr/local/mysql/data/! 备份数据库是个好主意。顺便说一句,只是用旧的覆盖新安装中的“data”文件夹对我来说不起作用,但是将旧的“data”文件夹中的实际数据库子文件夹复制到新的文件夹中。【参考方案10】:

120515 18:13:01 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。

关于这个错误,我假设您在 my.cnf 中指定了一个 datadir。如果您使用 MySQL 的非默认数据目录,则需要将文件夹 mysql 和 performance_schema(以存在者为准)移动到 my.cnf 中指定的数据目录。您可以在 mysql 目录中找到这些文件夹。

在 MySQL 5.5+ 中删除了 --skip-locking 选项。请改用 --skip-external-locking。参考 MySQL 文档 --> http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html 引用:“--enable-locking 和--skip-locking 服务器选项(使用--external-locking 和--skip-external-locking)。”

【讨论】:

以上是关于MySQL pid 结束(无法启动 mysql)的主要内容,如果未能解决你的问题,请参考以下文章

MySql启动报错,无法更新PID文件

mysql不能启动问题分析的一个小技巧

mysql无法启动ERROR! MySQL is running but PID file could not be found ?

mysql无法启动

MySQL安装过程启动mysqld_safe中提示的pid ended错误导致无法启动问题处理

mysql 无法启动的几种常见问题