MySQL服务器启动错误'

Mac OS X v10.6 (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
681492 次浏览

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

尝试查找后缀为".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/
    

我希望这对你有用。

在检查错误日志后,我发现了这个:

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的安装版本。

遵循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

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

我使用

我使用家酿 ('brew install MySQL ')安装MySQL。它安装了几个依赖项,然后安装了MySQL。

当我试着启动它时,

mysql.server start


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

我执行这个命令,

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

和MySQL工作。

请注意,您需要从MySQL目录的顶层(例如,usr /地方/地窖/ mysql / 5.5.25)运行mysql_install_db。直接在/脚本目录中运行它并不能为它提供足够的上下文来运行它。

对我来说,解决方案是覆盖/纠正/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文件——它在“data”目录下!因此,脚本/mysql_install_db设置在/usr/local/mysql/var中,但应用程序的其余部分似乎想要在/usr/local/mysql/data中工作!

所以我只是编辑了/etc/my.cnf,在部分[mysqld]下,我添加了一个指令,显式地将mysql的数据目录指向var(因为我通常期望它是任何方式),这样做之后,mysqld启动得很好。add指令看起来像这样:

Datadir = /usr/local/mysql/var

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

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

这个问题通常发生在你没有安装libaio.1库的时候。首先安装这个包,然后重做mysql_install_db步骤。

在终端上从解压库的文件夹中使用以下命令下载并安装库。

make prefix=$HOME install
cd /usr/local/lib
ln -sv $HOME/libaio.so.1 libaio.so.1

我试图重新安装MySQL,实际上我忘记停止服务器从我的旧安装。要解决这个问题,ps -ax | grep mysqlkill [whatever PIDs]。但话说回来,每个人都不一样。就像其他答案所说的,去/usr/local/var/mysql/并检查你的.err日志文件。

对我有效的解决方案是:不能在MySQL服务器上创建PID文件,权限被拒绝

改变我的一些权限似乎奏效了。我运行的是一台2012年年中的MacBook Air,带有Mac OS X v10.8.2 (Mountain Lion), MySQL是用家酿安装的。

chmod 0755 /var
chown root:wheel /var/tmp
sudo chmod 0771 /usr/local/var/mysql/*

我在Mac OS X v10.7.5 (Lion)上尝试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

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

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

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

这是因为dev.work.err属于_mysql:wheel,而不是我自己的用户名。

.

.

它可能与旧的MySQL进程有关。你得关掉它,重新启动。有时可能是由于MySQL配置文件中的冲突。尝试移动它并重新启动MySQL。

查看下面的URL了解更多详细信息。

< a href = " http://linuxadministrator.pro/blog/?P =225" rel="nofollow noreferrer">http://linuxadministrator.pro/blog/?p = 225 < / >

我也有同样的问题。对我来说,它是在运行mysqld之前的安装时执行brew remove家酿 (brew)在卸载之前似乎没有停止服务。

在检查.err文件后,我看到了另一个MySQL副本可能正在运行的日志错误,在终止旧服务后。然后我可以重新启动新的MySQL安装。

/etc/selinux/config中禁用SELinux:

SELINUX=disabled并重新启动服务器。

似乎MySQL进程正在运行,因此您无法使用端口。用于查看正在运行的MySQL进程。

ps auxf | grep mysql

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

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

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

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

这是因为我最初开始mysql.server作为,而不是我自己。

修复方法是删除err日志文件(由_mysql拥有)。重新开始就通过了。

检查一下你的硬盘是否还有剩余空间。当我的硬盘没有剩余空间时,我就遇到了这个问题。

我的错误文件还告诉我,端口可能正在被另一个进程使用,但简单地运行sudo mysql.server start为我解决了这个问题。

我在交换服务器IP地址后遇到了这个问题。在此之前,数据库工作正常。在文件/etc/my.cnf中有一个条目需要更新:

bind-address = xxx.xxx.xxx.xx

里面有旧的IP地址。

我也有同样的问题。原因很简单。我安装了两个MySQL服务器。一个来自MacPorts,另一个来自下载的包。所以我只是按照这里的说明,从包中卸载了一个。

如何从Mac OS X上卸载MySQL ?< / >

在那之后,MySQL运行得很好。

这是5.5版本的一个问题:

下面是你的my.cnf文件的[mysqld]部分的例子:

skip-character-set-client-handshake
collation_server=utf8_unicode_ci
character_set_server=utf8

参考:10.3.2服务器字符集和排序规则 . rref ="http://dev.mysql.com/doc/refman/5.6/en/charset-server.html" rel="nofollow noreferrer">

简单的…

修复2002年MySQL套接字错误。

修复了即将出现的2002套接字错误-连接MySQL放置套接字的位置和OS X认为它应该在的位置。MySQL将它放在/ tmp中,而OS X在/var/mysql中查找它。套接字是一种允许MySQL客户端/服务器通信的文件。

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

做得好:)这帮助我很多!

我从http://coolestguidesontheplanet.com/的人那里得到了这个指南

这对我很管用……

检查所有正在运行的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

这是一个权限问题。它不能启动,因为它不能写入文件mac.err,因为它属于其他人。

确保/usr/local/var/mysql文件夹属于启动MySQL的用户。如果我以杰克启动MySQL,这一切都很好。然而,如果你以根用户的身份启动它,它会创建一个jack不能写入的mac.err文件(由根用户拥有),所以当你试图以杰克的身份重新启动它时,它会失败。

  1. 确保文件夹和文件由运行mysql.server start的用户拥有
  2. 确保已经没有mac.errmac.pid文件被其他人拥有。
  3. 启动是作为正确的用户。

将日志文件“ib_logfile”移到“/var/lib/mysql”目录下,重启mysql。有时mysql会失败,因为它面临更新日志文件的困难

mv /var/lib/mysql/ib_logfile* /some/tmp/folder/

你也可以删除ib_logfile,因为它会在mysql重启后自动创建

现在重启mysql服务器

在我的情况下,当我试图启动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。

删除*。在错误提示的目录中找到的错误文件,创建MySQL所抱怨的文件,并重新启动MySQL。

我试着去掉所有的*。err文件,但我仍然得到相同的错误。我在错误日志中得到了一个错误:

InnoDB:试图打开先前打开的表空间。以前的表空间“erp/brand”在文件路径:./erp/brand.ibd下使用了“ID: 7”的空间。在“filepath: ./webdb1/system_ user.ibd”目录下,无法打开ID为7的表空间“webdb1/system_user”

所以我删除了所有的ib*文件,它工作:

rm -f *.err ib*

试试这个…

  1. 导航到问题的父目录cd YOURPATH/usr/local/mysql
  2. rm -rf *.local.err(删除文件)
  3. touch YOURUSERNAME.local.pid(生成新的*.local。错误抛出的Pid文件正在抱怨)
  4. “cd”返回到你的项目,并使用mysql.server start重新启动MySQL

Mac OS X v10.9 (Mavericks)上,这个脚本帮助我:

bash <(curl -Ls http://git.io/eUx7rg)

然后我重置我的密码根据ERROR 1045 (28000): Access denied for user 'root'@'(使用密码:YES)

以安全模式启动MySQL:

/usr/local/mysql/bin/mysqld_safe start

或者在Mac上,结束Activity Monitor应用程序中的任何mysqlmysqld任务(或其他)。

或者检查你的错误

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

在我的情况下,问题是,MySQL数据目录被意外地移动到错误的目录(/var/log,而不是/var/lib)。

在将数据移回/var/lib/mysql并重新启动服务器后,一切又恢复正常。

对我来说,解决办法很简单。

top

显示mysqld已经在运行。

sudo killall mysqld

然后让这个过程开始。

在我的家酿 MySQL安装中,我只需要将位于/usr/local/var/mysql/中的ib_logfile0和ib_logfile1移动到另一个目录。

然后我做了mysql.server start,一切正常。

当MySQL被不正确地关闭后试图启动时,可能会发生此错误

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

  2. 查看MySQL运行在哪个进程上。使用命令lsof -i:3306(默认的MySQL的端口号是3306)。

    你的输出应该是这样的:

    COMMAND   PID      USER  FD   TYPE  DEVICE             SIZE/OFF NODE NAME
    mysqld   4249  username  17u  IPv4  0x7843d9d130469c0b      0t0 TCP  localhost:mysql (LISTEN)
    
  3. 终止mysql: kill -15 4249进程

    Kill -15向进程发送一个信号,释放它正在锁定的所有资源,并终止该进程。

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

open /usr/local/var/mysql

你只需删除中的文件夹,然后

brew install mysql

再次安装。

从这个解解出来的。

但是这个解决方案会删除数据库。

不知何故,我搞砸了我的权限Mac OS X v10.11 (El Capitan),并决定从头开始重新安装MySQL。

我在El Capitan上使用家酿,并决定重新安装:

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.

在我的情况下,我在VPScPanel上得到了这个问题。

我试了之前的大部分答案,但都没有成功。

  1. 检查错误日志在哪里。它将在错误行的末尾被提到。

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

  2. 打开文件(/var/lib/mysql/111318.vps-11.com.err),检查底部的最新行。对我来说,有

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

  3. 解决方法:通过命令恢复和修复表索引:

    [~]# myisamchk -r /var/lib/mysql/mysql/dbMYI

    MySQL is not running

  4. 启动MySQL服务器

在我的例子中,错误发生是由于错误日志文件的访问问题。

下面两个命令帮助我解决这个问题。

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

在这里发布的一些答案的帮助下,我找到了这个问题

我先跑

sudo -i

所以我有根权限。

然后我删除了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

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

关键是要读取错误和日志,并找到错误的地方……

⚠️这将删除您的数据,所以请确保它首先备份。

如果没有人帮助你,只需删除文件夹/usr/local/var/mysql,然后使用brew reinstall mysql重新安装MySQL。

对我来说,我必须重新安装MySQL:

brew reinstall mysql

然后按下面的命令启动MySQL,在登录时重新启动:

brew services start mysql

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

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

这对我很管用。

如果你正在运行一个MySQL Galera集群,例如Percona XtraDB集群,检查数据目录下的wsrep_recovery.*文件(例如:/var/lib/mysql)。

当我试图启动一个被主机的伯父杀手杀死的节点时,我从systemctl得到了相同的消息,但在任何正常日志中都没有任何迹象表明为什么启动失败。wsprep恢复文件有答案,在我的情况下,我需要用以下标志启动MySQL:

mysqld --tc-heuristic-recover=ROLLBACK

我在重新启动并删除所有*err文件后遇到了这个问题。

在我看来,/usr/local/etc文件夹中缺少my.cnf.d目录。

它创造了它:

mkdir /usr/local/etc/my.cnf.d

我只是复制粘贴文件my.cnfmy.cnf.default位于/usr/local/etc到该目录。

然后MySQL可以重新启动:

cd /usr/local/var/mysql
mysql.server start

MySQL可以工作。

这招对我很管用:

注意:这是一个硬重新安装。当所有其他选项都用尽时再使用。

在Mac上使用自制程序:

列出运行时存在的所有MySQL实例

brew services

通过运行删除每个实例

brew uninstall <instance_name>

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

rm -rf /usr/local/var/mysql

使用Homebrew重新安装MySQL:

brew install mysql
brew install mysql@<version> #Optional

重新运行mysql。服务器启动:

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 server:

sudo ./mysql.server start(输入您的笔记本电脑密码)

如果它给出下面的输出…PID问题解决了

sudo ./mysql.server start


Starting MySQL
.. SUCCESS!

我通过跑步解决了这个问题

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

这里myUserName是我当前的登录用户名。

我必须在安全模式下检查我的错误文件,以找到根本原因:

  1. rm -f /usr/local/var/mysql/*.err
  2. mysqld_safe start
  3. cat mysql/*.err

这显示了升级例程中的一个错误。我试着修复它,但我在网上找不到足够的信息。在那之后,我放弃了,并手动导出数据库:

  1. mysql.server start --upgrade=MINIMAL,所以服务器将启动
  2. mysqldump将无法工作,因为它将尝试运行完整的升级,但你可以使用Sequel Pro, phpMyAdmin等来导出。
  3. 停止服务器,将mysql文件夹重命名为mysql.broken,并重新安装以获得一个新的mysql文件夹。
  4. 启动MySQL,手动导入前面导出的.sql文件。

我的回答很不专业,我不理解。我使用了CentOS和MySQL的通用版本…当我用用户启动mysql时,我的问题用--user=root解决了:

/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
.
.
.
< p >试一试 sudo rm -rf /usr/local/var/mysql/ hostnameerr (HOSTNAME is my HOSTNAME)

. err (HOSTNAME is my HOSTNAME

这是最简单的“i "在macOS中MySQL数据库的错误解决方案:

  1. 执行如下命令:
$ sudo mysql.server start
Starting MySQL
.. SUCCESS!
  1. 使用此命令访问数据库:
$ mysql -u root


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.31 Homebrew


Copyright (c) 2000, 2022, Oracle and/or its affiliates.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;
数据库
information_schema
mysql
performance_schema
sys
set中的4行(0.00秒)