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


88

好的,我进行了全面搜索,并花了很多时间安装,卸载,尝试各种选项,但没有成功。

我在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 是我在计算机上的用户名。

Answers:


80

编辑2012/09/18: 正如凯恩(Kane)指出的,请确保mysql在执行其他任何操作之前正确设置了数据库。请参阅“ mysql.server启动时PID错误?”以获取更多信息。

出于历史原因,保留了原始答案: 很可能权限问题。检查/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/*

65
我解决了运行中的问题:sudo chown -R _mysql:_mysql /usr/local/var/mysql
Matteo Alessani 2012年

1
我得到了同样的错误,但我没有在/ usr /本地的/ var / mysql的文件夹:(我也使用自制。
弥敦道伯肖

2
请参阅brew info mysql或相关问题的评论以寻求正确的解决方案
凯恩(Kane)2012年

4
须藤chmod ugo + w / tmp是我的解决方案。
本·拉西科特

2
我的是用sudo chown -R {my_user_name}:admin / usr / local / var / mysql55 /解决的
Packet Tracer

101

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

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

为我解决了。


18
无需制造这架777
JamesHalsall,2015年

2
我也搜索了很长时间,这对我来说是固定的。
2015年

6
请注意,我不建议在生产环境中将任何内容设置为777。这只需要在本地安装。我还要至少将其切换回755。
mikoop

1
如果您在mysql启动时看到错误警告:世界可写的配置文件'/var/lib/mysql/none-dev/my.cnf'被忽略了,那么您可能想要chmod ow / var / lib / mysql / none- dev / my.cnf
David Mann

1
我的是用sudo chown -R {my_user_name}:admin / usr / local / var / mysql55 /解决的
Packet Tracer

65

我最终完全重新安装了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
我尝试以各种可能的方式更改权限,但均未成功。最终按照这些指示操作并......成功:)
kartsims's

这是我发现的唯一解决方案。这应该是第一名
Dan

谢谢,这是唯一对我有用的东西。尽管我不必跑步mysqld --initialize --explicit_defaults_for_timestamp
深夜

1
正在启动MySQL ...错误!服务器退出而不更新PID文件(<path>-。lightspeed.irvnca.sbcglobal.net.pid)。得到这个错误
Unnikrishnan

1
只是自制的问题
麦格雷迪

31

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

我为解决这个问题所做的工作

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


干杯! 这种方式是最简单的,省了我一整天!
iplus26 '16

完美,您拯救了我的一天;)
Emy Stats

叹。在Internet上试用了所有解决方案2个小时之后,这终于解决了!好旧的重启!:)
SexyBeast

18

2014年11月:如果您在Mac OS X Mavericks或Yosemite的MySQL 5.6.x上遇到此错误,并希望在本地将MySQL与PHP配合使用(/pmp/mysql.sock是PHP PDO希望找到的sock文件的位置),这是为我解决的问题:

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是系统偏好设置->网络中具有的名称,它是网络上计算机的唯一ID。

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

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

3)使用bash帮助程序/包装器脚本启动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助手之前,可能必须执行此操作将其关闭。抵制杀死-9 [PID]的冲动,因为您可能会破坏数据。

mysqladmin -uroot shutdown

祝好运!


谢谢-我的解决了sudo chown -R {my_user_name}:admin / usr / local / var / mysql55 /
Packet Tracer

18

我在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

10

这为我工作:

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

这解决了我在MAC os 10.11.3中的问题(将模式更改为mysql目录的777之后)
Ratha

这意味着对该文件夹以及该文件夹下的所有文件和文件夹的所有用户都具有“读写执行”或全部权限。有关详细说明,请查看以下链接:linux.com/learn/understanding-linux-file-permissions
Kresimir Plese


3

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


不。我什至尝试使用chmod 777来查看是否可以解决问题,但是什么也没有。同样的错误。
Brajeshwar'3

您是否尝试过chmod 777 mysql目录并删除pid文件并重新启动MySQL?
LonnyLot 2012年

3

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

在这里,mysql无法写入root拥有的“ .err”文件。我必须删除该文件并重新启动服务器:

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

2

我在Mac上的MySQL上也遇到了类似的问题(Mac Os X无法启动MySQL Server。原因:255,并且“ ERROR!服务器在不更新PID文件的情况下退出了”)。长期试错的过程后,终于以恢复该文件的权限,我只是这样做:

启动磁盘Utilities.app
选择我的左侧面板驱动
点击“修复磁盘权限”按钮,

这样的伎俩为了我。希望这可以帮助其他人。


1

对我来说,它与:

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

1

对我有用的是:

  1. 转到您的mysql安装目录
  2. sudo chmod -R 777 data
  3. 然后返回一个目录
  4. cd support-files/
  5. sudo ./mysql.server start

之后,服务器开始运行。

但是这种方法的问题是,我每次想立即启动mysql时都必须重复一次。不知道为什么它突然开始表现得如此。


1

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

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

权限可能有问题

  1. 查找mysql是否正在运行并杀死它

ps -ef | grep MySQL

杀死-9 PID

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

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

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

须藤chown -R mysql / usr / local / var / mysql /


1

试试这个(OSX)

步骤1: ps -aux | grep mysql

然后杀死4位数的PID号

第2步: kill 1965

第三步: mysql.server start

或难以找到这些PID号,请尝试以下操作

再次执行步骤1: ps -aux | grep mysql

再次执行步骤2: killall

再次执行步骤3: mysql.server start


1

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

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

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

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


1

关键要点是检查.err文件,默认情况下,该文件位于Mac OSX中 /usr/local/var/mysql

该日志文件告诉我,我必须删除以下文件:

ibdata1
ib_logfile0
ib_logfile1

mysql.start在那之后运行MySQL成功。请注意,删除这些文件可能会导致数据丢失。



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


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,默认情况下没有文件,默认情况下不需要文件,这是我所不知道的。祝好运!



0

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

cd /usr/local/Cellar
sudo chown _mysql mysql

0

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

Osx => Cmd + Space =>磁盘实用程序=>验证磁盘权限。

修复磁盘权限后验证完成。mysql.server start命令成功运行。


这对我有用。请先尝试此操作,然后再执行其他操作。
kamlesh

0

没有答案对我有用。但是,我只是做了sudo mysql.server start这么做,并且效果很好。

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


0

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

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


0

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

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

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


0

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

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

我用自制软件在我的macbook mojave上安装了mysql@5.7

brew安装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!


0

发生在我身上的原因是我实际上是从MariaDB切换到Mysql。切换回MariaDB解决了这个问题。

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


这也是我的问题,我从MariaDB切换到MySQL。但是,切换回MariaDB并不是一个可以接受的解决方案。我删除了新的mysql,brew uninstall mysql@8.0然后删除了MariaDB创建的旧的mysql文件夹sudo rm -rf /usr/local/var/mysql(这显然会删除数据库)。然后brew install mysql@8.0mysql.server start它的作品。
antriver

0

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


0

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

mysql.server status

我一直解决删除日志文件的问题,但ps实际上显示了mysql进程。我杀了所有重新运行的东西mysql.server restart,它起作用了!
EAT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.