在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
答案 0 :(得分:262)
尝试找到带有后缀“.err”的日志文件,应该有更多信息。它可能在:
/usr/local/var/mysql/your_computer_name.local.err
这可能是权限问题
检查是否有任何mysql实例正在运行
ps -ef | grep mysql
如果是,你应该停止它,或者杀死进程
kill -9 PID
其中PID
是上一个命令输出时显示的用户名旁边的数字
检查/usr/local/var/mysql/
ls -laF / usr / local / var / mysql /
如果是root
所有者,则应更改mysql
或your_user
sudo chown -R mysql / usr / local / var / mysql /
答案 1 :(得分:192)
您是否按照brew install mysql
的说明进行了操作?
设置数据库以使用以下方式作为您的用户帐户运行:
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”身份运行,您可能需要sudo
:
sudo mysql_install_db ...options...
使用以下命令手动启动mysqld:
mysql.server start
注意:如果失败,您可能忘记执行上面的前两个步骤
答案 2 :(得分:126)
我在Mac计算机上遇到了同样的问题(正确地遵循了brew install
建议的所有安装步骤)。
删除错误文件为我修复了它:
sudo rm -rf /usr/local/var/mysql/dev.work.err
(dev.work
是我的主机名)
这很有效,因为dev.work.err
由_mysql:wheel
拥有,而不是我自己的用户名。
列出错误文件也可能已经修复了它。
答案 3 :(得分:83)
重启后我遇到了同样的问题。以下是我修复它的方法:
sudo chown -R _mysql /usr/local/var/mysql
答案 4 :(得分:30)
这对我有用......
检查所有正在运行的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
答案 5 :(得分:24)
尝试在错误关闭后启动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向进程发送一个siganl以释放它锁定的所有资源并在之后终止该进程。
mysql.server start
答案 6 :(得分:24)
我的错误文件也告诉我,该端口可能正由另一个进程使用,但只是运行sudo mysql.server start
为我解决了这个问题。
答案 7 :(得分:15)
我最近遇到过这个问题,但它之前有效,然后停止了。
这是因为我最初以{strong> root 而不是我自己开始mysql.server
。
修复是删除错误的日志文件(由_mysql
拥有)。再次启动它就通过了。
答案 8 :(得分:13)
尝试删除ib_logfile0
和ib_logfile1
文件,然后再次运行mysql
rm /usr/local/var/mysql/ib_logfile0
rm /usr/local/var/mysql/ib_logfile1
它对我有用。
答案 9 :(得分:13)
如果没有人帮助您,只需删除文件夹/usr/local/var/mysql
,然后再次安装mysql brew reinstall mysql
。
答案 10 :(得分:9)
对我有用的解决方案是: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/*
答案 11 :(得分:8)
对我来说,修复很简单:
top
显示mysqld已经在运行
sudo killall mysqld
然后允许该过程开始
答案 12 :(得分: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
答案 13 :(得分: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文件”
我注意到安装说明中有些奇怪的东西。它的所有权已更改为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
为我工作。希望它对你有所帮助。
答案 14 :(得分: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).
我运行了这个命令,
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目录中运行它并没有为它提供足够的上下文来运行它。
答案 15 :(得分:6)
如果您的系统具有多个版本的Mysql,则您很可能会遇到此PID错误
我们可以从杀死所有MySQL进程开始
sudo killall mysqld
转到/ usr / local,选择您想要的MySQL版本,然后为其提供MySQL权限。就我而言,我需要版本8。
sudo killall mysqld
转到文件夹 /usr/local/mysql-8.0.21-macos10.15-x86_64 并启动SQL Server
(输入您的笔记本电脑密码) 如果给出以下输出...则解决了PID问题
sudo chown -R mysql mysql-8.0.21-macos10.15-x86_64
sudo chown -R mysql mysql-8.0.21-macos10.15-x86_64
答案 16 :(得分:6)
对我来说,我不得不重新安装mysql
brew reinstall mysql
然后在下面 要启动,请立即启动mysql并在登录时重新启动:
brew services start mysql
答案 17 :(得分:5)
以安全模式启动Mysql
/usr/local/mysql/bin/mysqld_safe start
OR
在MAC上结束Activity Monitor应用程序中的任何mysql
或mysqld
任务(或其他)。
或通过
检查错误tail -f /usr/local/mysql/data/XXXXX-XXXXX-Pro.local.err
答案 18 :(得分:5)
似乎MySQL进程正在运行,因此您无法使用该端口。您可以使用以下命令检查正在运行的MySQL进程:
ps auxf | grep mysql
如果你得到任何MySQL进程使用kill -9 PID终止该进程ID,然后尝试启动MySQL。
答案 19 :(得分:4)
在这里发布的几个答案的帮助下,我找到了问题
首先我跑
sudo -i
所以我可以拥有root权限。
我删除了xxxx.err文件
rm -rf /usr/local/mysql/data/xxxx.err
我在SafeMode中启动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
当采取所有这些步骤时,我的数据库立即开始工作......
希望这可以帮助其他人...关键是阅读错误并记录并发现什么是错误的...
答案 20 :(得分:4)
在我的情况下,由于错误日志文件的访问问题而发生错误。
以下两个命令可帮助我解决问题。
sudo chown <user> /usr/local/var/mysql/<my-host-name>.err
sudo chmod 666 /usr/local/var/mysql/<my-host-name>.err
答案 21 :(得分:4)
这对我有用:
在装有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
答案 22 :(得分:3)
有同样的问题,对我来说,在安装mysqld之前正在进行brew删除。似乎brew在卸载之前不会停止服务。
检查.err文件后,我看到在终止旧服务后,可能正在运行另一个mysql副本的记录错误。然后我就可以重新启动新的mysql安装。
答案 23 :(得分:3)
错误日志说的是什么?我收到了这个错误,它最终成为my.cnf中的一个旧的无效设置,mysql错误日志表明了这一点。如果配置设置不正确,错误日志应该至少指向正确的方向。
好吧,我认为OP已经修复了这一点......但希望这可以指出其他人在正确的方向上看到这个错误。
答案 24 :(得分: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
然后(您也可以使用命令行),我将权限(一旦我将所有权授予 _mysql 和 mysql 用户)应用于所有封闭的文件夹在 /usr/local/mysql-5.5.21-osx10.6-x86_64 的文件夹的“获取信息”菜单中。你不需要知道别名,因为它只是一个别名。
文件夹的名称取决于您拥有的mysql的安装版本。
答案 25 :(得分:3)
试试这个..
cd YOURPATH/usr/local/mysql
rm -rf *.local.err
(删除文件)touch YOURUSERNAME.local.pid
(生成新的* .local.pid文件,引发的错误是抱怨)mysql.server start
答案 26 :(得分:2)
检查驱动器中是否还有空间。当我的驱动器中没有剩余空间时,我遇到了这个问题。
答案 27 :(得分:2)
简单....
修复2002 MySQL Socket错误
修复迫在眉睫的2002套接字错误 - 这是MySQL放置套接字的位置和OSX认为它应该在哪里,MySQL将它放在/ tmp中,OSX在/ var / mysql中查找它,套接字是一种文件类型允许mysql客户端/服务器通信。
sudo mkdir / var / mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
做得好:))
这帮了我很多! 我从http://coolestguidesontheplanet.com/
上的人那里获取了这个指南答案 28 :(得分:2)
问题是权限一,它无法启动,因为它无法写入mac.err,因为它由其他人拥有。
确保/ usr / local / var / mysql文件夹归启动mysql的用户所有。如果我启动mysql作为杰克它一切都很好。但是,如果你以root用户身份启动它,它将创建一个杰克无法写入的mac.err(由root拥有)文件,因此当你尝试重新启动它时,它将失败。
答案 29 :(得分:2)
就我而言,我在 vps,cPanel 上遇到了这个问题。
我尝试了上述大部分答案,但没有成功。
ERROR!服务器退出而不更新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/
答案 30 :(得分:2)
我遇到了同样的问题。移动我的/etc/my.cnf文件为我工作。我收到了信息here
答案 31 :(得分:1)
在“/ var / lib / mysql”中移动名为“ib_logfile”的日志文件并重启mysql。有时mysql会因为更新日志文件时遇到困难而失败
mv /var/lib/mysql/ib_logfile* /some/tmp/folder/
您也可以删除ib_logfile,因为它将在mysql重启后自动创建
现在重启mysql服务器
答案 32 :(得分:1)
不知怎的,我搞砸了El Capitan的权限,决定从头开始重新安装MySQL。
我在el 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
答案 33 :(得分:1)
删除你在错误中显示的目录中找到的* .err文件并创建mysql文件是抱怨的,重新启动mysql。
答案 34 :(得分:1)
我正在尝试重新安装mysql,实际上我忘了从旧安装中停止服务器。要解决此问题,请ps -ax | grep mysql
,然后kill [whatever PIDs]
。但是,再一次,对每个人来说都是不同的。与其他答案一样,转到/usr/local/var/mysql/
并检查您的.err日志文件。
答案 35 :(得分:1)
就我而言,当我尝试启动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!
答案 36 :(得分:0)
我在交换服务器IP后遇到了这个问题。数据库在此之前工作正常。 /etc/my.cnf中有一个我需要更新的条目:
bind-address = xxx.xxx.xxx.xx
那里有旧的IP地址。
答案 37 :(得分:0)
我的回答不专业,看不懂。我使用了 CentOS 和 Generic 版本的 Mysql...当我用 root 用户启动 mysql 时,我的问题解决了使用 --user=root
:
user@host# /path/to/mysql/support-files/mysql.server start --user=root
如果您使用的是 systemctl start mysql.service
,则需要更改 mysql.service
中的 /etc/systemd/system/mysql.service
文件:
.
.
.
ExecStart=/path/tp/mysql/support-files/mysql.server start --user=root
ExecStop=/path/to/mysql/support-files/mysql.server stop --user=root
.
.
.
答案 38 :(得分:0)
我必须在安全模式下检查我的错误文件才能找到根本原因:
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
文件。答案 39 :(得分:0)
我通过运行解决了这个问题
sudo chown -R myUserName /usr/local/var/mysql
这里的 myUserName 是我当前的登录用户名
答案 40 :(得分:0)
当您没有安装libaio.1库时,通常会出现此问题。首先安装该软件包并重做mysql_install_db步骤。
答案 41 :(得分:0)
重新启动并删除所有* 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起作用。
答案 42 :(得分:0)
如果您正在运行MySQL Galera群集(例如Percona XtraDB群集),请检查数据目录中的wsrep_recovery.*
个文件(例如:/var/lib/mysql
)。
当尝试启动一个被主机的OOM杀手杀死的节点时,我从systemctl收到了相同的消息,但是在任何正常日志中都没有迹象表明启动失败的原因。 wsrep恢复文件有答案,就我而言,我需要使用以下标志启动mysql:
mysqld --tc-heuristic-recover=ROLLBACK
答案 43 :(得分:0)
可能与旧的MySQL进程有关。你需要杀死它并重新启动。有时可能是由于MySQL配置文件中的冲突。尝试移动它并重启MySQL。请查看以下网址以获取更多详细信息。
http://linuxadministrator.pro/blog/?p=225
感谢。
答案 44 :(得分:0)
在/etc/selinux/config
SELINUX=disabled
并重启服务器
答案 45 :(得分:0)
在小牛队,这script帮助了我:
bash <(curl -Ls http://git.io/eUx7rg)
重设密码
答案 46 :(得分:0)
我遇到了同样的问题。原因很简单。我安装了2个mysql服务器。一个来自Mac Port,另一个来自下载包。所以我只是按照这里的说明从包装中卸载。 How do you uninstall MySQL from Mac OS X? 之后,mysql运行良好。
答案 47 :(得分:0)
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
答案 48 :(得分:0)
删除pid文件,然后再次启动mysqld。
答案 49 :(得分:0)
在我的自制mysql安装中,我只需将位于/ usr / local / var / mysql /中的ib_logfile0和ib_logfile1移动到另一个目录。
然后我做了mysql.server启动,一切正常。
答案 50 :(得分:0)
在我的情况下,问题是,mysql数据目录被意外移动到错误的目录(/ var / log,而不是/ var / lib)。将数据移回/ var / lib / mysql并重新启动服务器后,所有内容再次恢复正常。
答案 51 :(得分:-1)
我尝试删除所有* .err但仍然遇到相同的错误。我在错误日志中遇到了一个错误。
[错误] InnoDB:尝试打开以前打开的表空间。以前的表空间erp / brand在文件路径中使用空格ID:7 ./erp/brand.ibd。无法在文件路径中打开使用空格ID:7的表空间webdb1 / system_user:./ webdb1 / system_ user.ibd
所以我删除了所有的ib *文件并且它可以正常工作。
rm -f *.err ib*
答案 52 :(得分:-3)
$ open /usr/local/var/mysql
您只需在finder中删除该文件夹,然后
$ brew install mysql
再次安装。
我已经从这个解决方案中解决了。
但此解决方案将删除您的数据库