通过Brew安装MySQL后,我收到错误 - 服务器退出而不更新PID文件

时间:2012-03-08 20:53:29

标签: mysql homebrew

好的,我已经搜遍了所有的时间并花了很多时间安装,卸载,尝试各种选项但没有成功。

我使用的是Mac OS X Lion(10.7.3),我正在尝试设置Python,MySQL。

我通过HomeBrew成功安装了Python和MySQL。 Python效果很好。

安装MySQL之后,我按照前两个步骤 - unset和mysql_install_db命令。

现在,当我尝试启动mysql“mysql.server start”时,我收到以下错误

ERROR! The server quit without updating PID file (/usr/local/var/mysql/Brajeshwar.local.pid).
  • Brajeshwar是我机器上的用户名。

32 个答案:

答案 0 :(得分:93)

我发现这是mysql文件夹的权限问题。

chmod -R 777 /usr/local/var/mysql/ 

为我解决了。

答案 1 :(得分:70)

编辑2012/09/18: 作为pointed out by Kane,确保在执行任何其他操作之前正确设置了mysql数据库。有关详细信息,请参阅“PID error on mysql.server start?”。

原始答案保留了历史记录: 很可能 是权限问题。检查/usr/local/var/mysql/*.err。我说:

120314 16:30:14  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
120314 16:30:14 mysqld_safe mysqld from pid file /usr/local/var/mysql/janmoesen.local.pid ended

我也必须这样做:

sudo chown _mysql /usr/local/var/mysql/*

答案 2 :(得分:45)

我最终完全重新安装了mysql,终于解决了。

警告这将删除所有数据库,因此请务必先保存转储。

brew remove mysql
brew cleanup
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
sudo rm -rf /usr/local/var/mysql

brew install mysql
mysqld --initialize --explicit_defaults_for_timestamp
mysql.server start # no sudo!

答案 3 :(得分:28)

我在Mac 10.10.5 Yosemite上遇到过这个问题

我做了什么来解决这个问题

cd /usr/local/var/mysql
sudo rm *.err && sudo rm *.pid
sudo reboot
sudo mysql.server start

答案 4 :(得分:18)

2014年11月:如果您在Mac OS X Mavericks或Yosemite上的MySQL 5.6.x上出现此错误,并希望在本地使用MySQL和PHP(/ tmp / mysql.sock是PHP PDO期望找到的地方袜子文件),这是我修复它的原因:

1)取消注释默认的自制软件配置文件行并编辑如下

$ sudo vi /usr/local/Cellar/mysql/5.6.21/my.cnf
...
basedir = /usr/local/Cellar/mysql/5.6.21
datadir = /usr/local/var/mysql
port = 3306
server_id = <UNIQUE_NUMBER_HERE_OR_LEAVE_COMMENTED_OUT>
socket = /tmp/mysql.sock
pid-file = /usr/local/var/mysql/[BOXNAME].local.pid
....

BOXNAME就是您的系统首选项中的内容 - &gt;网络作为网络上计算机的唯一ID。

2)设置mysql datadir中所有文件的权限。这些都归[my_username]所有。 MySQL非常挑剔并且拒绝创建pid文件,除非它(用户_mysql)拥有该目录。

$ sudo chown -R _mysql:mysql /usr/local/var/mysql

3)使用bash helper / wrapper脚本启动MySQL:

$ sudo mysql.server start
Starting MySQL
. SUCCESS! 

希望有所帮助。如果上述方法不适合您,请尝试在Cellar / mysql / VERSION_ / bin /目录中手动运行mysqld_safe二进制文件,并检查设置是什么(如果它运行)

sudo /usr/local/Cellar/mysql/5.6.12/bin/mysqld_safe &

如果运行,您可以

ps aux | grep mysql 

并看到类似

的内容
[username]  6881   0.0  2.7  3081392 454836   ??  S     8:52AM   0:00.54 /usr/local/Cellar/mysql/5.6.21/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.6.21 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.21/lib/plugin --verbose --log-error=/usr/local/var/mysql/BOXNAME.local.err --pid-file=/usr/local/var/mysql/BOXNAME.local.pid

我不确定为什么这对我有用,但它会告诉你我从哪里获得my.cnf配置文件选项。您也可以使用命令行选项在手动启动mysqld时尝试进行故障排除。

如果你运行使用mysqld_safe管理运行MySQL服务器,你可能必须这样做才能在尝试使用mysql.server bash helper之前将其关闭。抵制杀死-9 [PID]的冲动,因为你可以破坏你的数据。

mysqladmin -uroot shutdown
祝你好运!

答案 5 :(得分:16)

我在OS X El Capitan上遇到了同样的问题,这是为我修复它的终端命令序列。

删除错误文件(您必须根据设置更改路径)

sudo rm /usr/local/mysql/data/*.err

找到仍在运行的mysql进程的信息并将其终止:

ps -A | grep -m1 mysql | awk '{print $1}' | sudo xargs kill -9

现在重启MySQL:

/usr/local/mysql/support-files/mysql.server start

答案 6 :(得分:10)

这对我有用:

sudo chmod -R 777 /usr/local/var/mysql/
sudo /usr/local/mysql/support-files/mysql.server start

答案 7 :(得分:3)

我的问题是我将服务器作为sudo启动了一次,然后尝试以本地用户身份重新启动。

这里mysql无法写入&#39; .err&#39; root拥有的文件。 我不得不删除该文件并重新启动服务器:

sudo rm /usr/local/var/mysql/*.err
mysql.server start

答案 8 :(得分:3)

这对我来说在10.12.2:

$ rm /usr/local/var/mysql/*.err

然后

$ brew services restart mysql

答案 9 :(得分:3)

如果我没记错,这是一个权限问题。尝试“触摸”和“chmod”pid文件或文件所在的文件夹。

答案 10 :(得分:2)

我在Mac上遇到类似的MySQL问题(Mac OS X无法启动MySQL服务器。原因:255并且“错误!服务器退出而不更新PID文件”)。经过长时间的试错过程,最后为了恢复文件权限,我只是这样做:

启动Disk Utilities.app
选择左侧面板上的驱动器
单击“修复磁盘权限”按钮

这对我有用。希望这可以帮助别人。

答案 11 :(得分:1)

对我有用的是:

  1. 转到您的mysql安装目录
  2. sudo chmod -R 777 data
  3. 然后返回一个目录
  4. cd support-files/
  5. sudo ./mysql.server start
  6. 之后服务器开始运行。

    但是这个方法的问题是我每次想要启动mysql时都要重复这个。不知道为什么它突然开始表现得这样。

答案 12 :(得分:1)

关键点是检查.err文件,默认情况下,在Mac OS X上,该文件位于/usr/local/var/mysql中。

该日志文件向我显示我必须删除以下文件:

ibdata1
ib_logfile0
ib_logfile1

此后,使用mysql.start运行MySQL可以成功进行。请注意,删除这些文件可能会导致数据丢失。

答案 13 :(得分:1)

试试这个(OSX)

第1步: sum()

然后终止4位数PID

第2步:ps -aux | grep mysql

第3步:kill 1965

或者很难找到这些PID号,请尝试以下

第1步:mysql.server start

第二步:ps -aux | grep mysql

第3步:killall

答案 14 :(得分:1)

查找usr / local / var / mysql / your_computer_name.local.err文件并了解有关错误的更多信息

位置:/usr/local/var/mysql/your_computer_name.local.err

可能是权限问题

  1. 查找mysql是否正在运行并将其杀死
  2.   

    ps -ef | grep mysql

         

    kill -9 PID

    其中PID是第二列值  2.检查mysql的所有权

      

    ls -laF / usr / local / var / mysql /

    if it is owned by root, change it mysql or your user name
    

    
      

    sudo chown -R mysql / usr / local / var / mysql /

答案 15 :(得分:1)

对我来说,它适用于:

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

答案 16 :(得分:0)

我在Linux上遇到过这个问题,但原因与任何mysql安装有关。在我的情况下,服务器在启动完成和pid文件更新之前崩溃。直接启动mysqld而不是通过“service mysql start”时会看到错误消息。

就我而言,原因是日志文件所在的分区已满。删除日志文件允许mysql重新启动。要测试此问题,请转到mysql活动日志的位置,然后执行df .

答案 17 :(得分:0)

实际上已经显示了此错误,因为mysql已经启动。尝试通过以下方式查看当前状态:

mysql.server status

答案 18 :(得分:0)

这是文件权限问题。 检查磁盘权限并进行修复。

Osx =&gt; Cmd + Space =&gt; Disk Utilty =&gt;验证磁盘权限。

在修复磁盘权限后验证已完成。 mysql.server启动命令是成功的。

答案 19 :(得分:0)

使用sudo chown -R _mysql:_mysql /usr/local/var/mysql解决了此问题 感谢Matteo Alessani

答案 20 :(得分:0)

发生这种情况是因为我实际上是从MariaDB切换到Mysql。 切换回MariaDB解决了这个问题。

我猜想现有数据库不兼容。

答案 21 :(得分:0)

请检查日志,您将获得更多详细信息。

使用以下命令跟踪错误日志

tail -100 /usr/local/var/mysql/<user_name>.local.err

对我来说,目录之一丢失了,一旦创建服务器就启动了。

答案 22 :(得分:0)

以上所有解决方案均不适用于我。 但他们为我提供了一些纠正此错误的线索。

  

mysql.server start ---- error服务器退出而不更新PID文件

我在Macbook mojave上使用自制软件安装了mysql@5.7

  

简单安装mysql@5.7

mysql错误日志位于/usr/local/var/mysql/IU.lan.err中,其中只有一行: 无法打开和锁定特权表:表“ mysql.user”不存在

在goole搜索引擎中尝试了很多帖子后,我转向了百度 https://blog.csdn.net/xhool/article/details/52398042 受这篇文章的启发,我找到了解决方案:

  

rm / usr / local / var / mysql / *

     

mysqld-初始化

root用户的随机密码将以bash显示。 但是命令mysql -uroot -p [theRandomPassword]无法工作。因此我必须重置密码。 创建具有这样内容的初始化文件

  

为'root'@'localhost'设置密码= PASSWORD('MyNewPass');

将其放置在易于找到的任何目录中,例如桌面

  

mysqld --init-file = [YourInitFile]&

许多日志显示在屏幕上。

  

mysql -uroot -pMyNewPass

享受您的高版本mysql!

答案 23 :(得分:0)

如果您已将mysql安装升级到8.x,请检查upgradation是否支持您的先前版本。

如果没有,mysql将无法工作!卸载mysql以及/usr/local/var/mysql中的所有配置文件(删除整个文件夹)。重新安装mysql。

注意:重新安装可能会导致数据丢失。

答案 24 :(得分:0)

sudo chmod -R 777 /usr/local/var/mysql/

适合我。

答案 25 :(得分:0)

我在OSX El Capitan的解决方案是:

sudo chmod ugo+w /tmp

它突然被打破了。

错误是:

ERROR! The server quit without updating PID file

,日志显示:

Can't start server : Bind on unix socket: Permission denied

在OSX下默认情况下没有my.cnf文件,默认情况下不需要,我也不知道。祝你好运!

答案 26 :(得分:0)

我有同样的问题:

但情况是,每次我尝试进入:

/usr/local/mysql/support-files/mysql.server start

创建了一个名为localhost.pid的文件,而不是错误中声明的iMax0.local.pid

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

对我有用的解决方案是复制localhost.pid并将其重命名为iMax0.local.pid

答案 27 :(得分:0)

这些答案都不适合我。但是,我只是做了sudo mysql.server start并且效果很好。

另外,对我来说,它没有在* .err文件中显示权限问题。

答案 28 :(得分:0)

$ sudo mysql.server restart

它对我有用。

答案 29 :(得分:0)

我有类似的问题。但以下命令救了我。

cd /usr/local/Cellar
sudo chown _mysql mysql

答案 30 :(得分:-2)

从源代码安装时,请按照文件INSTALL-SOURCE

中的说明进行操作

section 2.8

中给出了安装说明

安装完成后,检查是否有运行mysql的进程 与ps aux | grep mysql

你会发现这样的

root      1817  0.0  0.0 108336  1228 ?        S    Jan21   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mail.gaurav.local.pid
mysql     2141  0.0  1.2 497660 24588 ?        Sl   Jan21   0:26 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/mail.gaurav.local.err --pid-file=/usr/local/mysql/data/mail.gaurav.local.pid --socket=/tmp/mysql.sock --port=3306
root      5659  0.0  0.0 103256   840 pts/13   S+   11:30   0:00 grep mysql

kill所有与mysql相关的进程,然后尝试启动mysql服务器

答案 31 :(得分:-3)

首先mv -f /var/lib/mysql /var/lib/mysql.bak并尝试使用mysql_install_db --user=mysql --ldata=[destination]命令将目标替换为数据目录,然后使用/etc/init.d/mysql restart启动MySQL