![](/img/trans.png)
[英]Mysql server 8 error at startup: “The server quit without updating PID file”
[英]MySQL server startup error 'The server quit without updating PID file'
在Mac OS X v10.6 (Snow Leopard) 上,启动 MySQL 会出现以下错误:
服务器退出而不更新PID文件
[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
尝试找到后缀为“.err”的日志文件,应该有更多信息。 它可能在:
/usr/local/var/mysql/your_computer_name.local.err
应该是权限问题
检查是否有任何 mysql 实例正在运行
ps -ef | mysql
如果是,你应该停止它,或者终止进程
杀死 -9 PID
其中PID
是在上一个命令的输出中显示在用户名旁边的数字
检查/usr/local/var/mysql/
所有权
ls -laF /usr/local/var/mysql/
如果它是root
所有者,你应该改变它mysql
或your_user
须藤 chown -R mysql /usr/local/var/mysql/
您是否按照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
注意:如果失败,您可能忘记运行上面的前两个步骤
我在 Mac 机器上遇到了同样的问题(正确遵循brew install
建议的所有安装步骤)。
删除错误文件为我修复了它:
sudo rm -rf /usr/local/var/mysql/dev.work.err
( dev.work
是我的主机名)
这是有效的,因为dev.work.err
由_mysql:wheel
而不是我自己的用户名拥有。 CHOWN-ing 错误文件可能也会修复它。
重新启动后,我遇到了同样的问题。 这是我修复它的方法:
sudo chown -R _mysql /usr/local/var/mysql
这对我有用...
检查所有正在运行的 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
尝试删除ib_logfile0
和ib_logfile1
文件,然后再次运行 mysql
rm /usr/local/var/mysql/ib_logfile0
rm /usr/local/var/mysql/ib_logfile1
它对我有用。
在不正确关闭后尝试启动 msql 时可能会发生此错误。
查看mysql错误日志文件。 如果它提到诸如“检查您是否已经有另一个使用相同数据或日志文件的 mysqld 进程”之类的内容。 ,那么您需要正确关闭该进程。
查看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)
kill -15 4249
Kill -15 向进程发送一个信号以释放它锁定的所有资源并在之后终止进程。
mysql.server start
我的错误文件还告诉我该端口可能正被另一个进程使用,但只需运行sudo mysql.server start
即可为我解决这个问题。
⚠️这会清除您的数据,请确保先对其进行备份。
如果没有人的答案帮助您,只需删除文件夹/usr/local/var/mysql
然后再次安装 mysql brew reinstall mysql
。
我最近遇到了这个问题,但是它之前可以工作,然后停止了。
这是因为我最初以root而不是我自己的身份启动了mysql.server
。
修复方法是删除 err 日志文件(由_mysql
拥有)。 重新开始就通过了。
对我来说,修复很简单:
top
表明mysqld已经在运行
sudo killall mysqld
然后允许进程开始
对我来说,我不得不重新安装 mysql
brew reinstall mysql
然后在下面启动 mysql 现在并在登录时重新启动:
brew services start mysql
对我有用的解决方案在这里: 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/*
我在用,
我使用自制软件('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 目录中运行它不会为其提供足够的上下文来运行。
我在尝试在 MacOS X 10.7.5 上进行 brew upgrade 时遇到了这个问题。
不幸的是,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
对我来说,解决方案是覆盖/更正 /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
为我工作。 希望对你有帮助。
这对我有用:
在带有 Homebrew 的 Mac 上:
通过运行列出所有存在的 mysql 实例
$ brew services
通过运行删除每个实例
$ brew uninstall <instance_name>
删除/usr/local/var/mysql中的Mysql目录:
$ rm -rf /usr/local/var/mysql
使用自制软件重新安装 mysql:
$ brew install mysql
$ brew install mysql@<version> #Optional
重新运行 mysql.server start
$ mysql.server start
如果你的系统有多个版本的 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 服务器
(输入您的笔记本电脑密码)如果它给出以下输出... PID 问题已解决
sudo ./mysql.server start
@xxxx-M-R0SU support-files $ sudo ./mysql.server start Starting MySQL .. SUCCESS!
似乎 MySQL 进程正在运行,因此您无法使用该端口。 您可以使用以下命令检查正在运行的 MySQL 进程:
ps auxf | mysql
如果您得到任何 MySQL 进程,请使用 kill -9 PID 杀死该进程 ID,然后尝试启动 MySQL。
以安全模式启动Mysql
/usr/local/mysql/bin/mysqld_safe start
或
在 MAC 上 结束活动监视器应用程序中的任何mysql
或mysqld
任务(或其他)。
或检查你的错误
tail -f /usr/local/mysql/data/XXXXX-XXXXX-Pro.local.err
在此处发布的一些答案的帮助下,我能够找到问题
首先我跑
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
采取所有这些步骤后,我的数据库立即开始工作......
希望这可以帮助这里的其他人......关键是阅读错误并记录并找出错误所在......
不知何故,我搞砸了我对 El Capitan 的权限,并决定从头开始重新安装 MySQL。
我在 el capan 上使用 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
在我的情况下,错误是由于错误日志文件的访问问题而发生的。
以下两个命令帮助我解决问题。
sudo chown <user> /usr/local/var/mysql/<my-host-name>.err
sudo chmod 666 /usr/local/var/mysql/<my-host-name>.err
错误日志说什么? 我收到了这个错误,它最终成为 my.cnf 中一个旧的无效设置,mysql 错误日志指出了这一点。 如果不是一个糟糕的配置设置,错误日志至少应该指向正确的方向。
好吧,我假设 OP 在这一点上已经修复了它……但希望这能指出其他人看到这个错误的方向是正确的。
我有同样的问题。 移动我的 /etc/my.cnf 文件对我有用。 我在这里得到了信息
有同样的问题,对我来说,它在运行 mysqld 的先前安装时正在执行 brew remove 。 似乎 brew 在卸载之前不会停止服务。
在检查 .err 文件后,我看到了记录的错误,即在终止旧服务后,另一个 mysql 副本可能正在运行。 然后我能够重新启动新的 mysql 安装。
简单....
修复 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/上的人那里拿到了这份指南
尝试这个..
cd YOURPATH/usr/local/mysql
rm -rf *.local.err
(删除文件) touch YOURUSERNAME.local.pid
(生成新的* .local.pid文件,该错误是抱怨的) mysql.server start
重新启动mysql 我希望这对你有用。
检查错误日志后,我发现了这一点:
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
然后(您也可以在命令行中执行此操作),我将权限(一旦我将该所有权授予_mysql和mysql用户)从/usr/local/mysql文件夹的“获取信息”菜单中的所有封闭文件夹-5.5.21-osx10.6-x86_64 。 您不需要将其添加到别名,因为它只是一个别名。
文件夹的名称取决于您拥有的 mysql 安装版本。
检查驱动器中是否还有剩余空间。 当我的驱动器中没有剩余空间时,我遇到了这个问题。
问题是权限问题,它无法启动,因为它无法写入 mac.err,因为它归其他人所有。
确保 /usr/local/var/mysql 文件夹归将启动 mysql 的用户所有。 如果我以 jack 身份启动 mysql,那一切都很好。 但是,如果您以 root 身份启动它,它将创建一个 jack 无法写入的 mac.err(由 root 拥有)文件,因此当您尝试以 jack 身份重新启动它时,它将失败。
将名为“ib_logfile”的日志文件移动到“/var/lib/mysql”并重启mysql。 有时 mysql 会失败,因为它在更新日志文件时遇到困难
mv /var/lib/mysql/ib_logfile* /some/tmp/folder/
您也可以删除 ib_logfile 因为它会在 mysql 重启后自动创建
现在重启mysql服务器
就我而言,我在vps cPanel上遇到了这个问题。
我尝试了以上大多数答案,但未成功。
错误! 服务器退出而不更新PID文件(/var/lib/mysql/111318.vps-11.com.pid)。
[错误]致命错误:无法打开和锁定特权表:表'./mysql/db'被标记为已崩溃,应修复
[〜]#myisamchk -r /var/lib/mysql/mysql/db.MYI
https://forums.cpanel.net/threads/mysql-is-not-running.407142/
我试图重新安装 MySQL,但实际上我忘了从旧安装中停止服务器。 为了解决这个问题, ps -ax | grep mysql
ps -ax | grep mysql
并kill [whatever PIDs]
。 但是,话又说回来,这对每个人来说都是不同的。 就像其他答案所说的那样,转到/usr/local/var/mysql/
并检查您的 .err 日志文件。
就我而言,当我尝试启动 MySQL 时,我收到了同样的错误: The server quit without updating PID file
。 这是我为修复它所做的(使用终端):
goto /usr/local/var/mysql
sudo rm -rf hostname.err # Delete .err file
cd /usr/local/mysql/support-files
sudo mysql.server start # Success!
删除pid文件,然后再次启动mysqld。
删除您在错误显示的目录中找到的 *.err 文件,并创建 mysql 抱怨的文件,重新启动 mysql。
我在重新启动并删除所有 *err 文件后遇到了这个问题。
在我看来,/usr/local/etc 中缺少 my.cnf.d 目录。
它创造了它
mkdir /usr/local/etc/my.cnf.d
只需将位于 /usr/local/etc 中的 my.cnf 和 my.cnf.default 复制粘贴到该目录中。
然后Mysql能够重新启动:
cd /usr/local/var/mysql
mysql.server start
和 MYSQL 工作。
当您没有安装libaio.1库时,通常会出现此问题。 首先安装该软件包并重做 mysql_install_db 步骤。
可能与旧的 MySQL 进程有关。 您需要杀死它并重新启动。 有时可能是由于 MySQL 配置文件中的冲突。 尝试移动它并重新启动 MySQL。 检查以下网址以获取更多详细信息。
http://linuxadministrator.pro/blog/?p=225
谢谢。
在/etc/selinux/config
禁用 selinux
SELINUX=disabled
并重新启动服务器
我在交换服务器 IP 后遇到了这个问题。 在此之前,数据库运行良好。 /etc/my.cnf 中有一个条目需要更新:
绑定地址 = xxx.xxx.xxx.xx
它有旧的IP地址。
我有同样的问题。 原因很简单。 我安装了2个mysql服务器。 一个来自 Mac Port,另一个来自下载的包。 所以我只是按照这里的说明从包中卸载了那个。 如何从 Mac OS X 卸载 MySQL? 之后,mysql运行良好。
这是 5.5 版本的问题
这是 my.cnf 的 [mysqld] 部分的示例:
skip-character-set-client-handshake
collation_server=utf8_unicode_ci
character_set_server=utf8
参考: http : //dev.mysql.com/doc/refman/5.6/en/charset-server.html
我尝试删除所有 *.err 但仍然遇到相同的错误。 我在错误日志中得到了一个错误。
[错误] InnoDB:试图打开以前打开的表空间。 以前的表空间 erp/brand 在文件路径:./erp/brand.ibd 使用空间 ID:7。 无法在文件路径:./webdb1/system_user.ibd 处打开使用空间 ID:7 的表空间 webdb1/system_user
所以我删除了所有 ib* 文件并且它可以工作。
rm -f *.err ib*
在小牛队,这个脚本帮助了我:
bash <(curl -Ls http://git.io/eUx7rg)
就我而言,问题是 mysql 数据目录被意外移动到错误的目录(/var/log,而不是/var/lib)。 将数据移回 /var/lib/mysql 并重新启动服务器后,一切又恢复正常。
在我的自制 mysql 安装中,我只需将位于 /usr/local/var/mysql/ 中的 ib_logfile0 和 ib_logfile1 移动到不同的目录。
然后我只是做了 mysql.server start 并且一切正常。
我通过运行解决了这个问题
sudo chown -R myUserName /usr/local/var/mysql
这里 myUserName 是我当前的登录用户名
我必须在安全模式下检查我的错误文件才能找到根本原因:
rm -f /usr/local/var/mysql/*.err
mysqld_safe start
cat mysql/*.err
这揭示了升级例程中的错误。 我试图修复它,但在网上找不到足够的信息。 之后我放弃并手动导出数据库:
mysql.server start --upgrade=MINIMAL
这样服务器就会启动mysqldump
不会工作,因为它会尝试运行完整升级,但您可以使用 Sequel Pro、phpMyAdmin 等来导出。mysql
文件夹重命名为mysql.broken
,然后进行全新安装以获得一个新的mysql
文件夹。.sql
文件。我的回答不专业,看不懂。 我使用了CentOS和Mysql 的通用版本......当我以root用户启动 mysql 时,我的问题使用--user=root
解决了:
user@host# /path/to/mysql/support-files/mysql.server start --user=root
如果您使用systemctl start mysql.service
,您需要更改/etc/systemd/system/mysql.service
mysql.service
文件:
.
.
.
ExecStart=/path/tp/mysql/support-files/mysql.server start --user=root
ExecStop=/path/to/mysql/support-files/mysql.server stop --user=root
.
.
.
尝试使用 sudo rm -rf /usr/local/var/mysql/HOSTNAME.err (HOSTNAME 是我的主机名)
如果您正在运行 MySQL Galera 集群,例如 Percona XtraDB Cluster,请检查数据目录中的wsrep_recovery.*
文件(例如: /var/lib/mysql
)。
在尝试启动被主机的 OOM 杀手杀死的节点时,我从 systemctl 收到了相同的消息,但在任何正常日志中都没有说明启动失败的原因。 wsrep 恢复文件有答案,就我而言,我需要使用以下标志启动 mysql:
mysqld --tc-heuristic-recover=ROLLBACK
$ open /usr/local/var/mysql
您只需删除finder中的文件夹,然后
$ brew install mysql
重新安装。
我已经从这个解决方案中解决了。
但此解决方案将删除您的数据库
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.