MySql服务器启动错误“服务器退出但未更新PID文件”


284

在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

7
以管理员用户身份运行。与sudo /usr/local/mysql/support-files/mysql.server start
Chinmay 2011年

6
同样的问题。使用brew安装mysql
vrybas

20
这里同样的问题。还安装了brew。
jspooner 2011年

11
我在Mac上也遇到了这种情况,只是删除了错误日志,例如“ /usr/local/var/mysql/*.err”,成功启动。
Mathew P. Jones

3
我在Mac上也遇到了同样的错误。但是我解决了。如果通过.dmg文件安装,请转到系统偏好设置,然后单击mysql图标,然后单击“启动mysql”按钮。
Amaranadh Meda'3

Answers:


276

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

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

权限可能有问题

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

    ps -ef | grep MySQL

    如果是的话,您应该停止它,或者终止进程

    杀死-9 PID

    PID上一个命令的输出中,用户名旁边显示的数字在哪里

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

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

    如果您是所有者,root则应进行更改,mysql或者your_user

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


24
我不得不向mysql用户而不是我的用户求婚。
贾里德(Jared)

3
为我工作。我检查了错误文件,并说这是因为文件权限。执行了chown命令并开始工作。谢谢!!
Packet Tracer

2
须藤乔敦- R的my_user在/ usr /本地的/ var / mysql /下至少为我工作
比约恩Børresen

根据我自己的经验-请注意,在完成sudo chown之后,您当前没有在其他用户或root下运行某些mysql进程。ps -ef | grep mysql将验证您没有任何运行-否则您将无法启动它。
亚瑟·弗兰克尔

1
总救生员。我唯一的观察是mysql文件夹的文件路径可能有所不同。
ALisboa

198

您是否遵循的指示brew install mysql

设置数据库以使用以下用户帐户运行:

对于mysql 5.x:

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

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

mysql_install_db --help

并查看MySQL文档:

对于mysql 8.x:

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

确保/usr/local/var/mysql上面的数据目录为空,必要时进行备份。

要以用户“ mysql”的身份运行,您可能需要sudo

sudo mysql_install_db ...options...

手动启动mysqld:

mysql.server start

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


78
如果即使按照输出中的步骤操作后,仍然反复遇到相同的错误,请从与* .pid文件相同的目录中删除* .err文件。mahdiyusuf.com/post/21022913180/…–
ekillaby

6
我尝试遵循这些说明一百万次,但从未成功。我试图通过不清理酿酒医生警告我的所有东西来“作弊”,因为我认为它们没有任何作用。最后,清理并遵循冲泡医生的建议,可以完成上述设置。给其他路过的人一个便条;不要试图欺骗酿酒医生,以为您知道更多!
跨越

9
当我冲泡医生并向自己的用户添加写许可权时,仍然有很多问题。sudo chown -R your_user /usr/local/var/mysql/就像@Tombart的回答:)
GabLeRoux

1
@countfloortiles是的!删除错误文件即可。:-)
ott--

6
mysqld_install_db命令给了我错误mysql_install_db: [ERROR] unknown variable 'tmpdir=/tmp'
Snowcrash 2015年

125

我的Mac机器上有相同的问题(正确遵循提示的所有安装步骤brew install)。

删除错误文件已为我修复:

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

之所以有效,dev.work.err是因为它归_mysql:wheel我所有,而不是我自己的用户名。仔细检查错误文件也可能会对其进行修复。


2
这也解决了我的问题,重新启动mysql后无法再工作了,给了我同样的问题,但是删除了_mysql:admin拥有的错误日志解决了该问题
user980085 2013年

5
这似乎是最有用的,这使我意识到我不应该使用SUDO启动此服务,而应使用自己的用户帐户运行它。
Bnjmn 2013年

3
对于使用Homebrew安装MySQL的用户来说,这是一个很好的答案
Stephane Paquet,2014年

经过数周的尝试,我删除了错误文件后,一切开始正常工作。谢谢
DF

我不必删除它,只需将其重新输入我的帐户即可,因为某个地方的_mysql帐户接管了它。
萨米·拉尔比

90

重新启动后,我遇到了同样的问题。这是我的解决方法:

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

非常感谢-别忘了备份东西,以防万一您弄乱了权限
m02ph3u5 2014年

谢谢。我在Ubuntu中遇到Lampp的问题。我将整个Lampp文件夹从/ opt复制到了新服务器。当我尝试启动mysql时,我收到一条消息:服务器退出而不更新PID文件。转到lampp / var /并执行chown -R mysql mysql /对我有用!
戴夫2014年

6
谢谢,您是我的英雄;)
Fareed Alnamrouti 2014年

非常感谢队友!保存了一天!
2015年

8
在El Capitan上有效:sudo chown -R _mysql /usr/local/mysql/data
Justin

33

这对我有用...

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

$ ps aux | grep mysql

USER     PID    %CPU  %MEM 
_mysql   5970   0.0   0.4 ...

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

$ sudo kill -9 [PID]

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

对您在第一个命令中看到的所有行执行该操作。

然后,您可以再次启动MySQL服务器:

mysql.server start

或用于pkill mysql杀死所有与“ mysql”匹配的进程(-9在大多数情况下是不必要的)。
bfontaine 2015年

杀死具有特定ID的所有进程,然后重新启动
Anupam Maurya

26

在不正确关闭后尝试启动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)
  1. 终止运行mysql的进程: kill -15 4249

Kill -15向进程发送消息以释放它锁定的任何资源,并在此之后终止进程。

  1. 现在,mysql应该可以正常启动了: mysql.server start

无论付出什么代价,这在High Sierra仍然对我有用。
乔纳森·斯蒂卡尔

24

我的错误文件还告诉我,该端口可能已被其他进程使用,但只需运行即可sudo mysql.server start为我解决问题。


是的...这也对我有用...上面没有任何效果
Prashant

我遵循的说明是在Mac上启动MySQL的某处阅读的说明是'sudo /usr/local/mysql/support-files/mysql.server start'。那产生了错误“服务器退出而不更新pid文件”,这就是我到达此页面的方式。在尝试了无数答案之后,我发现“ sudo mysql.server start”成功了。谢谢。
rodmclaughlin

19

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

rm /usr/local/var/mysql/ib_logfile0
rm /usr/local/var/mysql/ib_logfile1

这个对我有用。


1
我还删除了.err同一目录中的文件,这对我有用。
安东尼到

好。这很简单,对我真的很有效。但是,就我而言,我仅将其重命名为ib_log*.bak
-mochadwi,

18

如果没有人回答,请删除文件夹/usr/local/var/mysql,然后再次安装mysql brew reinstall mysql


9
警告多数民众赞成意味着删除所有数据库。
变成

我比安装mysql5.7之前安装了更高版本的mysql,然后会出现此问题。只需删除/ usr / local / var / mysql并brew reinstall mysql@.57解决它。
飞马

首先将/ usr / local / var / mysql下的数据库移动到另一个文件夹。安装并成功启动mysql服务后,尝试将所需的数据库移回。
civic.LiLister

15

我最近遇到了这个问题,但是它之前曾起作用,然后停止了。

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

解决方法是删除err日志文件(由拥有_mysql)。重新启动它通过了。


谢谢!我在搜索一个小时后遇到了同样的问题,然后遇到了您的答案。
FLY

11

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

brew reinstall mysql

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

brew services start mysql



8

尝试在MacOS X 10.7.5上进行升级时遇到此问题。

不幸的是,mysql也从5.5.14升级到5.6.10。尝试了新的,没有用。

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

brew switch mysql 5.5.14

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

cd /usr/local/var/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak

第一次使用后对我有用brew upgrade mysql,然后brew switch mysql 5.7.17是我以前的版本。奇怪的!
豪尔赫·奥尔皮内尔19'Jan

7

我在用着,

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

当我尝试启动它时,

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

我执行了这个命令

west$ /usr/local/Cellar/mysql/5.5.25/scripts/mysql_install_db 

和MySQL的作品。

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


为我使用5.5.28并在OSX 10.7.5上酝酿
ch3rryc0ke 2012年

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

mysqld_safe终止了自己,没有任何解释。跑步/etc/init.d/mysql.server start导致错误:

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

我在安装说明中发现了一些奇怪的地方。它已将目录“ data”的所有权更改为mysql,但未更改为“ var”;这是不寻常的,因为多年来我一直必须确保var目录是mysql可写的。所以我手动跑chown -R mysql /usr/local/mysql/var,然后尝试再次启动它。仍然没有运气。但更糟糕的是,var目录中没有.err文件-它在“数据”目录中!因此scripts / mysql_install_db在/ usr / local / mysql / var中设置了阵营,但是应用程序的其余部分似乎想在/ usr / local / mysql / data中完成其工作!

因此,我只编辑了/etc/my.cnf,并在[mysqld]部分下添加了一条指令,以将mysql的数据目录显式指向var(因为我通常希望这样做),然后,mysqld就会启动精细。要添加的指令如下所示:

datadir = / usr / local / mysql / var

为我工作。希望对您有帮助。


5

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

ps auxf | grep MySQL

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


这个答案是我的救星。
桑博汉

5

以安全模式启动Mysql

/usr/local/mysql/bin/mysqld_safe start

要么

在MAC上结束活动监视器应用程序中的任何任务mysqlmysqld任务(或其他任务)。

或通过检查您的错误

tail -f /usr/local/mysql/data/XXXXX-XXXXX-Pro.local.err

4

错误日志说什么?我收到了此错误,它最终成为my.cnf中的旧无效设置,该位置由mysql错误日志指示。如果配置设置不错,那么错误日志至少应将您指向正确的方向。

好吧,我认为OP已经在这一点上对其进行了修复...但是希望这可以使其他人看到正确方向的错误。


4

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

首先我跑

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

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

希望这可以在这里帮助其他人。关键是阅读错误并记录日志,找出有问题的地方...


4

在我的情况下,由于错误日志文件的访问问题而发生错误。

以下两个命令可帮助我解决该问题。

sudo chown <user> /usr/local/var/mysql/<my-host-name>.err
sudo chmod 666 /usr/local/var/mysql/<my-host-name>.err

3

希望这项工作对您有用。

检查错误日志后,我发现了这一点:

120309 17:42:49 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120309 17:42:50 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
120309 17:42:50 [Warning] You need to use --log-bin to make --binlog-format work.
120309 17:42:50 [Note] Plugin 'FEDERATED' is disabled.
120309 17:42:50 InnoDB: The InnoDB memory heap is disabled
120309 17:42:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120309 17:42:50 InnoDB: Compressed tables use zlib 1.2.3
120309 17:42:50 InnoDB: Initializing buffer pool, size = 16.0M
120309 17:42:50 InnoDB: Completed initialization of buffer pool
120309 17:42:50  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 /usr/local/mysql/data/ib_logfile0
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
120309 17:42:50 mysqld_safe mysqld from pid file /usr/local/mysql/data/lu1s.local.pid ended

为了解决这个问题,我授予了整个mysql文件夹的所有权:

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

然后(您也可以在命令行中进行操作),我将权限(一旦将所有权授予_mysqlmysql用户)从/ usr / local / mysql的文件夹的“获取信息”菜单中应用于所有包含的文件夹-5.5.21-osx10.6-x86_64。您无需将其设置为别名,因为它只是一个别名。

文件夹的名称取决于您拥有的mysql的安装版本。


3

我有同样的问题。移动我的/etc/my.cnf文件对我有用。我在这里得到信息


3

有同样的问题,对我来说,它是在运行先前安装的mysqld的同时做的是brew brew。似乎brew在卸载之前不会停止服务。

检查.err文件后,我看到了记录的错误,该错误是在终止旧服务后可能正在运行mysql的另一个副本。然后,我能够重新启动新的mysql安装。


是的,检查错误日志。就我而言,我跑去ls -latr /usr/local/var/mysql/找到最新的修改文件,其中包含错误日志,然后tail -50 name.err查看错误,这是config中的问题。
mahemoff 2013年

谢谢上帝,你是对的。我使用ps aux | grep mysqld,然后终止了与的过程,kill -9 [proccessid]服务器成功启动
Sagish 2013年

3

简单....

修复2002 MySQL Socket错误

修复迫在眉睫的2002年套接字错误-链接到MySQL放置套接字的位置以及OSX认为应该放置的位置,MySQL将其放在/ tmp中,而OSX在/ var / mysql中寻找它,套接字是允许mysql客户端使用的一种文件类型/服务器通讯。

须藤mkdir / var / mysql

须藤ln -s /tmp/mysql.sock /var/mysql/mysql.sock

做得好 : )

这可以帮助我很多!我从http://coolestguidesontheplanet.com/上的家伙那里获得了本指南


3

尝试这个..

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

1
这对我有用。原因是,该error.log文件归“ _mysql”所有,并在日志中引发错误。只是想记录下来,以防其他人遇到此问题。 150818 19:32:06 mysqld_safe Logging to '/opt/boxen/log/mysql/error.log'. 150818 19:32:06 mysqld_safe Starting mysqld daemon with databases from /opt/boxen/data/mysql /opt/boxen/homebrew/bin/mysqld_safe: line 129: /opt/boxen/log/mysql/error.log: Permission denied
多诺万2015年

如果您的问题与权限相关,则将无法正常工作,并引发相同的mysql错误。
mpoletto

也为我工作。我还必须重新启动apache(对于那些也使用LAMP堆栈的用户)。
Tommyixi

3

不知何故,我搞砸了对El Capitan的权限,并决定从头开始重新安装MySQL。

我在capitan上使用brew,并决定重新安装:

brew uninstall mysql
sudo rm -rf /usr/local/var/mysql
brew install mysql
mysql.server start # ... SUCCESS

全新安装的文件权限从更改_mysql为包括我的用户名

 ls -alh /usr/local/var/mysql
drwxr-xr-x   22 lfender  admin   748B Mar 22 09:58 .
# ... etc

2

检查驱动器中是否还有空间。当驱动器中没有剩余空间时,我遇到了这个问题。


如果您不提及,我将永远不会想到太空问题。你是救星!
Kshitij Bajracharya

2

问题是一种权限,它无法启动,因为它无法写入mac.err,因为它是别人拥有的。

确保/ usr / local / var / mysql文件夹归将启动mysql的用户所有。如果我启动mysql作为jack的话,一切都很好。但是,如果您以root用户身份启动它,它将创建一个jack。无法写入的mac.err(root用户拥有)文件,因此,当您尝试以jackson身份重新启动它时,它将失败。

  1. 确保文件夹和文件归运行mysql.server start的用户所有
  2. 确保还没有别人拥有的mac.err或mac.pid。
  3. Start是正确的用户。

我使用了chown -R <用户名> / usr / local / var / mysql,它工作得很好。不错的解决方案。
mbokil

2

就我而言,我在vps cPanel上遇到了这个问题。

我尝试了以上大多数答案,但未成功。

  1. 检查您的错误日志在哪里。将在错误行的末尾提及。

错误!服务器退出而不更新PID文件(/var/lib/mysql/111318.vps-11.com.pid)。

  1. 打开该文件(/var/lib/mysql/111318.vps-11.com.err),然后在底部检查最新行。就我而言,

[错误]致命错误:无法打开和锁定特权表:表'./mysql/db'被标记为崩溃,应该修复

  1. 如何解决此问题:通过命令恢复并修复表索引:

[〜]#myisamchk -r /var/lib/mysql/mysql/db.MYI

https://forums.cpanel.net/threads/mysql-is-not-running.407142/

  1. (重新)启动你的mysql
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.