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

Bra*_*war 74 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).
Run Code Online (Sandbox Code Playgroud)
  • Brajeshwar 是我机器上的用户名.

mik*_*oop 96

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

chmod -R 777 /usr/local/var/mysql/ 
Run Code Online (Sandbox Code Playgroud)

为我解决了.

  • 没有必要制作这个777 (14认同)
  • 请注意我不建议在生产环境中为777设置任何内容.这只需要在本地安装.我也会把它切换回755作为最低限度. (4认同)
  • 我也搜索了很长时间,这就是为我解决的问题。 (2认同)
  • 可能需要“sudo”! (2认同)

jan*_*sen 74

编辑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
Run Code Online (Sandbox Code Playgroud)

我也必须这样做:

sudo chown _mysql /usr/local/var/mysql/*
Run Code Online (Sandbox Code Playgroud)

  • 我解决了运行问题:`sudo chown -R _mysql:_mysql/usr/local/var/mysql` (61认同)
  • sudo chmod ugo + w/tmp是我的解决方案. (3认同)
  • 请参阅`brew info mysql` 或 [this question](http://stackoverflow.com/questions/4444861/pid-error-on-mysql-server-start) 的评论以获得正确的解决方案 (2认同)
  • 我的解决了 sudo chown -R {my_user_name}:admin /usr/local/var/mysql55/ (2认同)

art*_*pro 53

我最终完全重新安装了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!
Run Code Online (Sandbox Code Playgroud)

  • 我尝试以各种可能的方式更改权限但没有成功.按照这些说明结束......成功:) (3认同)

Rak*_*mes 28

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

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

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


php*_*uru 18

2014年11月:如果您在Mac OS X Mavericks或Yosemite上的MySQL 5.6.x上遇到此错误,并希望在本地使用MySQL和PHP(/ tmp/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
....
Run Code Online (Sandbox Code Playgroud)

BOXNAME是您的系统首选项 - >网络中的内容,作为网络上计算机的唯一ID.

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

$ sudo chown -R _mysql:mysql /usr/local/var/mysql
Run Code Online (Sandbox Code Playgroud)

3)使用bash助手/包装器脚本启动MySQL:

$ sudo mysql.server start
Starting MySQL
. SUCCESS! 
Run Code Online (Sandbox Code Playgroud)

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

sudo /usr/local/Cellar/mysql/5.6.12/bin/mysqld_safe &
Run Code Online (Sandbox Code Playgroud)

如果运行,你可以

ps aux | grep mysql 
Run Code Online (Sandbox Code Playgroud)

并看到类似的东西

[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
Run Code Online (Sandbox Code Playgroud)

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

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

mysqladmin -uroot shutdown
Run Code Online (Sandbox Code Playgroud)

祝好运!


Cir*_*e B 17

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

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

sudo rm /usr/local/mysql/data/*.err
Run Code Online (Sandbox Code Playgroud)

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

ps -A | grep -m1 mysql | awk '{print $1}' | sudo xargs kill -9
Run Code Online (Sandbox Code Playgroud)

现在重启MySQL:

/usr/local/mysql/support-files/mysql.server start
Run Code Online (Sandbox Code Playgroud)


Kre*_*ese 10

这对我有用:

sudo chmod -R 777 /usr/local/var/mysql/
sudo /usr/local/mysql/support-files/mysql.server start
Run Code Online (Sandbox Code Playgroud)


小智 8

这在 10.12.2 上对我有用:

$ rm /usr/local/var/mysql/*.err
Run Code Online (Sandbox Code Playgroud)

然后

$ brew services restart mysql
Run Code Online (Sandbox Code Playgroud)