【MySQL】修改配置后,重启MySQL报错[ERROR] The server quit without updating PID file

本文详细解析了MySQL在启动过程中可能出现的各种错误,包括配置修改后的启动失败、权限问题、进程冲突等,并提供了详尽的解决步骤。同时,针对连接MySQL时遇到的常见错误,如通过socket连接失败,也给出了有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

在没有修改配置时,MySQL启动正常;

错1:修改配置后MySQL启动不了,报错:

[root@localhost mysql]# service mysql restart  
Starting MySQL...[ERROR] The server quit without updating PID file (/usr/local/mysql/data/mysqld.pid).  

错2:输入命令mysql,报错can’t connect to local mysql server through socket ‘/var/run/mysqld/mysqld.sock’。 

连接MySql报错“can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock'”

分析:

错1原因:是这个存放mysqld.pid的目录,所属者 不是mysql(服务),也就是说 mysql服务没有“读写” 这个目录内容的权限;

例如:

看下边的文件,文件位置是“/data/dmain”,没有放在安装mysql的目录下,所以现在的目录文件 “所有者”  是root ,

则说明“mysql服务”队这些文件没有操作权限,而在mysql服务重启时,需要读这里的文件进行读写,所有在操作文件读写的过程中就会出现问题,只有将这些文件的所有者修改为mysql才能将文件读写的权限归属到mysql服务下;这样才能保证MySQL服务 重启时 必要文件读写的功能。

需要修改目录的所有者(相当于 ‘’设置权限‘’)下图示:(也就是将文件的所有者 改为 mysql)

具体操作命令:

其实就一句:   chown -R mysql:mysql  【mysql相应的data目录位置】

执行结果为:

修改完成后,重启mysql服务成功;

 

提示:

1、【mysql相应的data目录位置】 这个目录位置,是根据mysql相关配置文件 my.cnf 中设置的如:

datadir=/data/dmain   

socket=/data/dmain/mysqld.sock

 

附加:摘录网上各位大佬的“奇淫绝技”:

看见这个不要惊慌,先把刚才修改的配置注释掉,看是不是配置有误!大部分是手误造成。 
如果不行,再尝试一下方法:

1.可能是/usr/local/MySQL/data/mysqld.pid文件没有写的权限
解决方法 : 
给予权限,执行 
“chown -R mysql:mysql /usr/local/MySQL/data/” 
“chmod -R 755 /usr/local/mysql/data” 
然后重新启动mysqld!

2.可能进程里已经存在mysql进程
解决方法: 
用命令“ps -ef|grep mysqld”查看是否有mysqld进程, 
如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法: 
去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法: 
请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

5.skip-federated字段问题
解决方法: 
检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6.错误日志目录不存在
解决方法: 
使用“chown” “chmod”命令赋予mysql所有者及权限

7.selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法: 
关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。
 

####################################################################################

遇到的问题---mysql 启动错误-server PID file could not be found

2013年11月14日 17:46:18 张小凡vip 阅读数 72509

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/q383965374/article/details/16120355

[root@centos var]# service mysqld stop

MySQL manager or server PID file could not be found!       [FAILED]

解决办法:

首先查看一下进程

[root@irxpert-test/]# ps aux |grep mysq*

root    10274  0.0  0.0  68160  1336 ?        S    13:43   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/irxpert-test.pid
mysql    10353  0.0  1.0 344360 39464 ?        Sl   13:43   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/irxpert-test.err --pid-file=/var/lib/mysql/irxpert-test.pid
root     11884  0.0  0.0  63384   760 pts/1    S+   15:44   0:00 grep mysq*

如果看到上面的内容,那说明,Mysql的进程卡死了,这时用就要把这些卡死的进程都关闭

[root@centos mysql]# kill10274

[root@centos mysql]# kill10353

启动Mysql就ok了

[root@centos mysql]# service mysql start

Starting MySQL.                                            [  OK  ]

 

如果杀掉进程之后还是不行。

具体要看报错信息 如果没有指定日志路径 一般在是 /data/mysql 中的localhost.err文件中可以看到信息。

如果线程中无死进程 可以先看 service mysql status 看下状态 根据提示删掉多余的东西 

进入/data/mysql 也就是你的数据库目录 把多余的删除,包括localhost.err 和其他 index等东西

如果 多重启几次  一直执行 service mysql start 就可以重启成功了

 

#################################################################################

我碰到的同样问题。。。。原来是home目录下 内存满了。。删了几个文件后重新启动 ok

#################################################################################

连接MySql报错“can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock'”

情况:

我是在ubuntu上安装mysql的,系统提示我安装mysql-client。我安装之后,输入命令mysql,报错can’t connect to local mysql server through socket ‘/var/run/mysqld/mysqld.sock’。 
原因:还需要安装mysql-server 
解决办法:apt-get install mysql-server

安装完之后,会提示设置密码,用户名默认root。

使用mysql登录命令:mysql -uroot -pXXXXXX(root为用户名,xxx为密码)即可登录成功

 

########################################################################################

mysql Can't connect to local MySQL server through socket 问题解决

系统环境:Mac。

操作过程:使用mysql -u{用户名} -p{密码} 失败。

错误信息:

mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

原因分析:

1.可能mysql服务停止了。

  mysqld_safe是一个shell 脚本,会调用mysqld启动mysql服务器,并监听服务器。

   如果mysqld进程异常终止,mysqld_safe将自动重启mysqld。

运行

/usr/local/mysql/bin/mysqld_safe &

&为后台启动。

后再次使用:

mysql -u{用户名} -p{密码}

成功!

分类: mysql

<think>嗯,用户遇到了在openEuler系统上启动MySQL服务时报错的问题,错误信息是“The server quit without updating PID file”。我需要一步步分析可能的原因,并提供解决方案。首先,应该先检查权限问题,因为MySQL需要正确的权限来写入PID文件和数据库目录。然后,查看错误日志,通常错误日志里会有更详细的信息,能帮助定位问题。接着,确认配置文件是否有错误,比如my.cnf中的配置项是否正确。另外,端口冲突也是一个可能的原因,需要检查3306端口是否被其他进程占用。还有可能是磁盘空间不足,或者内存不足导致MySQL无法启动。SELinux或者AppArmor这样的安全模块有时候也会阻止MySQL写入文件,需要检查是否开启了这些安全模块,并适当调整策略。最后,如果问题依旧存在,可能需要尝试重新初始化数据库或者重新安装MySQL。用户可能需要按照这些步骤逐一排查,找到具体原因后解决。</think>### 解决MySQL启动报错 "The server quit without updating PID file" 的分步指南 #### 第一步:定位错误日志 执行命令查看MySQL错误日志(默认路径): ```bash sudo tail -100 /var/log/mysqld.log ``` 或使用实际配置文件路径: ```bash sudo grep "log-error" /etc/my.cnf ``` #### 第二步:检查PID文件权限 1. 确认PID文件路径(通常在配置文件中): ```bash sudo grep "pid-file" /etc/my.cnf # 示例输出:pid-file=/var/run/mysqld/mysqld.pid ``` 2. 修复权限(假设路径为`/var/run/mysqld/mysqld.pid`): ```bash sudo chown -R mysql:mysql /var/run/mysqld sudo chmod 755 /var/run/mysqld ``` #### 第三步:检查数据目录权限 1. 查找数据目录路径: ```bash sudo grep "datadir" /etc/my.cnf # 示例输出:datadir=/var/lib/mysql ``` 2. 重置权限: ```bash sudo chown -R mysql:mysql /var/lib/mysql sudo chmod 750 /var/lib/mysql ``` #### 第四步:排查端口冲突 1. 检查3306端口占用: ```bash sudo netstat -tulpn | grep 3306 ``` 2. 强制终止占用进程(假设进程ID为1234): ```bash sudo kill -9 1234 ``` #### 第五步:验证配置文件 使用严格模式检查配置: ```bash sudo mysqld --verbose --help --validate-config ``` #### 第六步:释放磁盘空间 1. 检查磁盘使用率: ```bash df -h ``` 2. 清理日志文件(示例路径): ```bash sudo rm /var/log/mysql/*.log ``` #### 第七步:临时关闭SELinux ```bash sudo setenforce 0 # 临时关闭 sudo vim /etc/selinux/config # 永久关闭需修改SELINUX=disabled ``` #### 第八步:尝试安全模式启动 ```bash sudo mysqld_safe --skip-grant-tables & ``` #### 第九步:数据库恢复(谨慎操作) ```bash sudo mv /var/lib/mysql /var/lib/mysql_bak sudo mysql_install_db --user=mysql sudo systemctl start mysqld ``` #### 附加诊断技巧 1. 手动启动观察输出: ```bash sudo /usr/sbin/mysqld --console ``` 2. 检查系统日志: ```bash sudo journalctl -xe -u mysqld ``` #### 典型错误日志示例及解决方案 ```log 2023-01-01T12:00:00.000000Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable ``` 解决方案: ```bash sudo chmod 660 /var/lib/mysql/ibdata1 ``` ```log 2023-01-01T12:00:00.000000Z 0 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use ``` 解决方案: ```bash sudo ss -tulpn | grep :3306 sudo kill -9 <占用进程ID> ``` 通过以上步骤的逐步排查,95%以上的同类启动问题都可以得到有效解决。建议每次操作后使用`systemctl status mysqld`查看服务状态变化。如果问题仍未解决,请提供具体的错误日志片段以便进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值