MySql服务器启动错误'服务器退出而不更新PID文件'

Chi*_*may 273 mysql

在Snow Leopard上,启动MySQL会出现以下错误:

服务器退出而不更新PID文件

my.cnf中

[mysqld]
port            = 3306

socket          = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 16K

pid-file=/var/run/mysqld/mysqld.pid

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid
Run Code Online (Sandbox Code Playgroud)

Tom*_*art 268

尝试找到带有后缀".err"的日志文件,应该有更多信息.它可能在:

/usr/local/var/mysql/your_computer_name.local.err

这可能是权限问题

  1. 检查是否有任何mysql实例正在运行

    ps -ef | grep mysql

    如果是,你应该停止它,或者杀死这个过程

    kill -9 PID

    PID上一个命令的输出上显示的用户名旁边的数字

  2. 检查所有权 /usr/local/var/mysql/

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

    如果它是root你的所有者应该改变它mysqlyour_user

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

  • 不适合我,仍然有同样的问题 (36认同)
  • 我不得不向我的用户而不是我的用户. (22认同)
  • 为我工作.我检查了错误文件,并说它是由于文件权限.执行了chown命令并且工作了.谢谢!! (3认同)
  • chown为mysql.start上的pid问题工作 (2认同)
  • sudo chown -R my_user/usr/local/var/mysql /至少为我工作 (2认同)
  • 完全救星。我唯一的观察是 mysql 文件夹的文件路径可能会有所不同。 (2认同)

svs*_*svs 195

你有没有按照说明进行操作brew install mysql

设置数据库以与您的用户帐户一起运行:

unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Run Code Online (Sandbox Code Playgroud)

要在另一个文件夹中设置基表,或使用其他用户运行mysqld,请查看以下帮助mysqld_install_db:

mysql_install_db --help
Run Code Online (Sandbox Code Playgroud)

并查看MySQL文档:

例如,要运行用户"mysql",您可能需要/usr/local/var/mysql:

unset TMPDIR
mysqld --initialize-insecure --log-error-verbosity --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Run Code Online (Sandbox Code Playgroud)

手动启动mysqld:

sudo mysql_install_db ...options...
Run Code Online (Sandbox Code Playgroud)

注意:如果失败,您可能忘记运行上面的前两个步骤

  • 如果在按照输出中的步骤后反复出现相同的错误,则从*.pid文件中删除*.err文件.http://www.mahdiyusuf.com/post/21022913180/mysql-the-server-quit-without-updating-pid-file (77认同)
  • 当我酿造医生并向我自己的用户添加写入权限时,我仍然有一些错误.`sudo chown -R your_user/usr/local/var/mysql /`就像@Tombart的回答:) (8认同)
  • 我尝试了一百万次遵循这些指令,但从来没有让它起作用.我试图通过不清理Brew医生警告我的所有事情来"欺骗",因为我认为它们没有任何区别.最后,清理和遵循酿造医生的建议使得可以完成上述设置.所以路过的任何人都要注意; 不要试图欺骗酿酒医生,并认为你知道更好! (6认同)
  • `mysqld_install_db`命令给出了错误`mysql_install_db:[ERROR] unknown variable'tmpdir =/tmp'` (6认同)
  • `mysql_install_db` 在 mysql 8.0 中被删除 (2认同)

ukl*_*viu 126

我在我的Mac机器上遇到了同样的问题(正确地遵循了建议的所有安装步骤brew install).

删除错误文件为我修复了它:

sudo rm -rf /usr/local/var/mysql/dev.work.err(dev.work是我的主机名)

这工作是因为dev.work.err拥有_mysql:wheel而不是我自己的用户名.列出错误文件可能也会修复它.

  • 这似乎是最有帮助的,让我意识到我不应该使用SUDO启动此服务,而是在我自己的用户帐户下运行它. (5认同)
  • 对于那些使用Homebrew安装MySQL的人来说,这是一个非常好的答案 (3认同)
  • 这也解决了我的问题,重新启动mysql后再也无法工作了,给我同样的问题,但是删除了_mysql所拥有的错误日志:admin解决了这个问题 (2认同)

小智 90

重启后我遇到了同样的问题.以下是我修复它的方法:

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

  • 在El Capitan上,这个工作:`sudo chown -R _mysql/usr/local/mysql/data` (8认同)
  • 谢谢,你是我的英雄;) (6认同)

mik*_*oop 31

这对我有用......

检查所有正在运行的MySQL进程:

$ ps aux | grep mysql

USER     PID    %CPU  %MEM 
_mysql   5970   0.0   0.4 ...
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令终止上面命令中列出的所有进程:

$ sudo kill -9 [PID]
Run Code Online (Sandbox Code Playgroud)

替换[PID]为上面列表中的单个PID,例如5970.

对第一个命令看到的所有行都这样做.

然后你可以再次启动你的MySQL服务器:

mysql.server start
Run Code Online (Sandbox Code Playgroud)


cos*_*r11 25

尝试在错误关闭后启动msql时,可能会发生此错误.

  1. 看一下mysql错误日志文件.如果它提到"检查你是否已经有另一个使用相同数据或日志文件的mysqld进程".,那么你需要正确关闭该过程.

  2. 查看运行mysql的进程,使用以下命令: lsof -i:3306

您的输出应如下所示:

COMMAND  PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mysqld  4249 username   17u  IPv4 0x7843d9d130469c0b      0t0  TCP localhost:mysql (LISTEN)
Run Code Online (Sandbox Code Playgroud)
  1. 终止运行mysql的进程: kill -15 4249

Kill -15向进程发送一个siganl以释放它锁定的所有资源并在之后终止该进程.

  1. 现在mysql应该启动没有问题: mysql.server start


jar*_*ith 24

我的错误文件告诉我,该端口可能正被另一个进程使用,但只是运行sudo mysql.server start修复了我的问题.

  • 是的...这对我也有用...上面没有任何效果 (2认同)

use*_*355 16

如果没有人帮助你,只需删除文件夹/usr/local/var/mysql,然后再次安装mysql brew reinstall mysql.

  • 警告那意味着擦除所有数据库. (5认同)

小智 15

我最近遇到过这个问题,但它之前有效,然后停止了.

这是因为我最初mysql.server是以root身份而不是以自己身份开始的.

修复是删除错误的日志文件(由其拥有_mysql).再次启动它就通过了.


use*_*355 15

尝试删除ib_logfile0ib_logfile1文件,然后再次运行mysql

rm /usr/local/var/mysql/ib_logfile0
rm /usr/local/var/mysql/ib_logfile1
Run Code Online (Sandbox Code Playgroud)

这个对我有用.

  • 我还删除了同一目录中的“.err”文件,这对我有用。 (3认同)
  • 出色地。这非常简单,而且对我来说确实有效。但是,就我而言,我只将其重命名为“ib_log*.bak” (2认同)
  • 它对我有用,尝试了所有其他解决方案,但没有任何效果,它在删除 ib_logfile* 文件后起作用。 (2认同)
  • 很好的解决方案,其他答案无法帮助我 (2认同)
  • 我的天啊!这对我也有用!这将是我第三次失去所有数据库!太感谢了! (2认同)

Gab*_*abe 10

对我有用的解决方案如下:https://serverfault.com/questions/334284/cant-create-pid-file-on-mysql-server-permission-denied

改变我的一些权限似乎可以解决问题.我正在使用OS X 10.8.2运行2012年中期的Macbook Air,并且使用自制软件安装了mysql.

chmod 0755 /var
chown root:wheel /var/tmp
sudo chmod 0771 /usr/local/var/mysql/*
Run Code Online (Sandbox Code Playgroud)


sum*_*mit 9

对我来说,我不得不重新安装mysql

brew reinstall mysql
Run Code Online (Sandbox Code Playgroud)

然后在下面启动要立即启动mysql并在登录时重新启动:

brew services start mysql
Run Code Online (Sandbox Code Playgroud)


cen*_*enk 8

尝试在MacOS X 10.7.5上进行升级时,我遇到了这个问题.

不幸的是,mysql也从5.5.14升级到5.6.10.尝试新的,没有工作.

我决定回到原来的设置并做了一个

brew switch mysql 5.5.14
Run Code Online (Sandbox Code Playgroud)

这并没有解决问题.在其他地方,我读到并做了这个,瞧!一切都回来了:)

cd /usr/local/var/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
Run Code Online (Sandbox Code Playgroud)


Luk*_*nga 8

对我来说,修复很简单:

top
Run Code Online (Sandbox Code Playgroud)

表明mysqld已经在运行了

sudo killall mysqld 
Run Code Online (Sandbox Code Playgroud)

然后允许该过程开始


wes*_*ter 7

我正在使用,

我使用自制软件安装MySQL('brew install mysql').它安装了几个依赖项,然后是mysql.

当我试图启动时,

west$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/west.local.pid).
Run Code Online (Sandbox Code Playgroud)

我跑了这个命令,

west$ /usr/local/Cellar/mysql/5.5.25/scripts/mysql_install_db 
Run Code Online (Sandbox Code Playgroud)

和MySQL的工作原理.

请注意,您需要从mysql目录的顶级(IE,usr/local/Cellar/mysql/5.5.25)运行mysql_install_db.直接在/ scripts目录中运行它并没有为它提供足够的上下文来运行它.


小智 7

对我来说,解决方案是覆盖/更正/ etc/my/cnf中的数据目录.

我使用自述文件中提供的指示从源代码构建了MySQL 5.5.27:


# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions

# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data

# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &

# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
Run Code Online (Sandbox Code Playgroud)

mysqld_safe在没有解释的情况下终止了自己.运行/etc/init.d/mysql.server start导致错误:

"服务器退出而不更新PID文件"

我注意到安装说明中有些奇怪的东西.它的所有权已更改为mysql的目录"data",但不是"var"; 这是不寻常的,因为多年来我必须确保var目录是mysql可写的.所以我手动运行chown -R mysql /usr/local/mysql/var然后尝试再次启动它.仍然没有运气.但更糟糕的是,var目录中没有.err文件 - 它位于"数据"目录中!所以scripts/mysql_install_db在/ usr/local/mysql/var中设置了camp,但是应用程序的其余部分似乎想在/ usr/local/mysql/data中完成它的工作!

所以我刚编辑了/etc/my.cnf并在[mysqld]部分下面添加了一个指令,明确地将mysql的数据目录指向var(正如我通常所期望的那样),并且在这样做之后,mysqld启动了精细.要添加的指令如下所示:

datadir =/usr/local/mysql/var

为我工作.希望它对你有所帮助.


Dav*_*alu 7

这对我有用:

在带有 Homebrew 的 Mac 上:

通过运行列出所有存在的 mysql 实例

$ brew services
Run Code Online (Sandbox Code Playgroud)

通过运行删除每个实例

$ brew uninstall <instance_name>
Run Code Online (Sandbox Code Playgroud)

删除/usr/local/var/mysql中的Mysql目录:

$ rm -rf /usr/local/var/mysql
Run Code Online (Sandbox Code Playgroud)

使用自制软件重新安装 mysql:

$ brew install mysql
$ brew install mysql@<version> #Optional
Run Code Online (Sandbox Code Playgroud)

重新运行 mysql.server start

$ mysql.server start
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这种方法是硬重新安装。这种方式将清除所有旧数据库。 (2认同)

SAN*_*.H. 6

如果你的系统有多个版本的 Mysql 那么你很可能会遇到这个 PID 错误

我们可以从杀死所有 MySQL 进程开始
sudo killall mysqld

去 /usr/local 选择你想要的 MySQL 版本,然后提供 MySQL 权限。就我而言,我需要版本 8。
sudo chown -R mysql mysql-8.0.21-macos10.15-x86_64

转到文件夹 /usr/local/mysql-8.0.21-macos10.15-x86_64并启动 SQL 服务器
sudo ./mysql.server start(输入您的笔记本电脑密码)如果它给出以下输出... PID 问题已解决

@xxxx-M-R0SU support-files $ sudo ./mysql.server start Starting MySQL .. SUCCESS!


小智 5

似乎MySQL进程正在运行,因此您无法使用该端口。您可以使用以下命令检查正在运行的MySQL进程:

ps auxf | grep MySQL的

如果得到任何MySQL进程,请使用kill -9 PID杀死该进程ID,然后尝试启动MySQL。


Sau*_*tel 5

以安全模式启动Mysql

/usr/local/mysql/bin/mysqld_safe start
Run Code Online (Sandbox Code Playgroud)

要么

在MAC上结束Activity Monitor应用程序中的任何mysqlmysqld任务(或其他).

或者检查你的错误

tail -f /usr/local/mysql/data/XXXXX-XXXXX-Pro.local.err
Run Code Online (Sandbox Code Playgroud)


Pau*_*ner 5

在此处发布的一些答案的帮助下,我能够找到问题

首先我跑

sudo -i

所以我可以有root访问权限。

比我删除了 xxxx.err 文件

rm -rf /usr/local/mysql/data/xxxx.err

在我以安全模式启动 MySQL 之后

/usr/local/mysql/bin/mysqld_safe start

会尝试启动,会因为出错退出……会新建一个xxx.err文件,需要阅读一下才能看到出错原因

tail -f /usr/local/mysql/data/mysqld.local.err

在我的情况下,由于某种原因,它缺少一些文件夹和文件/var/log/夹内的文件......所以我创建了两个

cd /var/log

mkdir mysql

touch mysql-bin.index

创建新文件后,您需要更改权限

chown -R _mysql /var/log/mysql

采取所有这些步骤后,我的数据库立即开始工作......

希望这可以帮助这里的其他人......关键是阅读错误并记录并找出错误所在......


Bri*_*Ray 4

错误日志说了什么?我收到此错误,它最终成为my.cnf文件中旧的无效设置,MySQL 错误日志表明了这一点。如果不是错误的配置设置,错误日志至少应该为您指明正确的方向。