Linux MySQL 常见无法启动或启动异常的解决方案

在 Linux 上自建 MySQL 服务器,经常遇到各种无法启动或启动后异常的问题,本文列举一些常见问题的解决办法。

注意:以下错误日志提示,都是查看 MySQL 错误日志得到,查看方法如下:

查看下 MySQL 配置文件 my.cnf 中有记录,日志记录在/alidata/log/mysql/error.log 下

MySQL 配置文件 my.cnf 权限问题导致无法启动,错误提示:World-writable config file '/etc/my.cnf'  is ignored

Binlog 丢失导致无法启动,错误日志: File './mysql-bin.000001' not found

Binlog 无法读取导致无法启动,错误日志:Failed to open log (file './mysql-bin.000001', errno  13)

不能创建 PID 导致无法启动,错误日志:Can't start server: can't create PID file: No such  file or directory

不能创建临时文件导致无法启动,错误日志:mysqld: Can't create/write to file '/tmp/ibfguTtC'  (Errcode: 13)

MySQL 服务无法识别导致无法启动,错误提示:mysqld: unrecognized service

MySQL 配置了过大的内存导致无法启动,错误日志:InnoDB: Cannot allocate memory for the buffer  pool

MySQL 启动参数过多导致无法启动,错误提示:Too many arguments (first extra is 'start')

MySQL 目录权限问题导致无法启动,错误日志:File './mysql-bin.index' not found (Errcode:13 -  Permission denied)

MySQL 未初始化导致无法启动,错误提示:can't open the mysql.plugin table

MySQL 启动成功但未监听端口

MySQL ibdata1权限问题导致无法启动,错误日志:InnoDB Operating system error number 13 in a  file operation

磁盘空间满导致 MySQL 无法启动

进程残留导致 MySQL 无法启动

MySQL 服务自动停止

MySQL 配置文件 my.cnf 权限问题导致无法启动,错误提示:World-writable config file '/etc/my.cnf'  is ignored

问题描述

主机 Linux MySQL 无法启动,报如下错误:

问题分析

查看 MySQL 错误日志发现如下错误(提示 MySQL 库的 host 表无法打开):

查看 /etc/my.cnf 配置文件:

到 MySQL 数据库所在目录查看表是否存在:

发现 MySQL 库的 host 表是存在的,那为什么会提示不存在呢?

问题应该出在 /etc/my.cnf 文件上,从第一个截图也可以看到警告信息(/etc/my.cnf 被忽视)

查看文件权限:

原来文件权限被设置成 777,因安全问题导致被 MySQL 忽视,所以去查询默认的数据库存放路径,没有 MySQL 库的 host  表导致启动失败:

解决办法

将 /etc/my.cnf 权限修改成 644,然后启动 MySQL 即可:

Binlog 丢失导致无法启动,错误日志: File './mysql-bin.000001' not found

问题描述

清理磁盘空间时删除了全部 binglog 日志,导致 MySQL 无法启动:

MySQL 的 errorlog 里面可以看到错误信息:

解决办法

1、注释 Binlog 配置恢复方法:

编辑 /etc/my.cnf,找到 log-bin=mysql-bin,在前面加#将其注释暂时关闭 binlog,保存修改后启动 MySQL  服务

注意:my.cnf 配置文件路径以实际调用路径为准

2、清理 Binlog 索引恢复方法:

查看 Binlog 索引文件

所以,需要清空 mysql-bin.index 索引文件后即可,清理方法可以通过 vi 或者 echo 命令清理,如下:

echo “” > mysql-bin.index

去除 Binlog 日志索引文件中调用的内容后,测试启动成功。

[root@test var]# /etc/init.d/mysqld startStarting MySQL. SUCCESS!

3、文件还原恢复方法:

提交工单,由我们帮您挂载最近的快照,您从快照磁盘复制最新的 binlog 文件到 mysql 的数据目录下,再重启 MySQL 服务即可。

注意:提交工单时请说明需要挂载快照的磁盘和快照。

正确清理 MySQL Binlog 方法请参考如下命令:

mysql -uroot -p 密码use mysql;purge binary logs to ‘mysql-bin.011113’;

注意:mysql-bin.011113 是 Binlog 文件名,mysql-bin.011113 不会被删除,而 mysql-bin.011113  之前的日志都会被删除。

Binlog 无法读取导致无法启动,错误日志:Failed to open log (file './mysql-bin.000001', errno  13)

问题描述

MySQL 无法启动报错:

Starting MySQL…The server quit without updating PID file  [FAILED]a/server/mysql/data/test.pid).

查看 MySQL 的错误日志会提示如下信息:

110711 00:00:00 [ERROR] Failed to open log (file './mysql-bin.000001',  errno 13)

这说明 Binlog 日志无法去读,一般由于磁盘空间满,或者权限不正确导致。

解决办法

首先查询磁盘空间:

[root@test /]# df -hFilesystem Size Used Avail Use% Mounted

on/dev/xvda1  20G 2.7G 17G 14% /tmpfs 498M 0 498M 0% /dev/shm/dev/xvdb1

30G 19G 9.7G 66%  /alidata

查看磁盘空间没有满,则需要 ls 命令检查文件权限:

-r———— 1 root root 601 Jul 28 2014 mysql-bin.000001

这说明文件属主和权限不正确,需要执行如下两条命令修复(mysql-bin.000001 这个日志文件需要换成具体文件名):

chmod 660 mysql-bin.000001chown mysql.mysql mysql-bin.000001

修改正确后已经可以正常启动mysql

不能创建 PID 导致无法启动,错误日志:Can't start server: can't create PID file: No such  file or directory

问题描述

MySQL 启动报错信息如下:

Starting mysqld (via systemctl): Job for mysqld.service failed

because the  control process exited with error code. See "systemctl

status mysqld.service"  and "journalctl -xe" for details、 [FAILED]

根据提示,使用 systemctl status mysqld.service 和 journalctl -xe 查看服务启动失败的原因。

[root@ ~]# systemctl status mysqld.servicemysqld.service -

SYSV: MySQL  database server.Loaded: loaded

(/etc/rc.d/init.d/mysqld)Active: failed (Result:  exit-code) since Wed

2016-01-20 18:26:57 CST; 40s agoDocs:

man:systemd-sysv-generator(8)Process: 2979

Ex主机tart=/etc/rc.d/init.d/mysqld  start (code=exited,

status=1/FAILURE)Jan 20 18:26:56 spark01 systemd[1]:  Starting SYSV:

MySQL database server….Jan 20 18:26:57 spark01 mysqld[2979]:  MySQL

Daemon failed to start.Jan 20 18:26:57 spark01 mysqld[2979]: Starting

mysqld: [FAILED]Jan 20 18:26:57 spark01 systemd[1]: mysqld.service:

control  process exited, code=exited status=1Jan 20 18:26:57 spark01

systemd[1]: Failed  to start SYSV: MySQL database server..Jan 20

18:26:57 spark01 systemd[1]: Unit  mysqld.service entered failed

state.Jan 20 18:26:57 spark01 systemd[1]:  mysqld.service failed.[root@

~]#journalctl

-xeUnit session-2.scope has begun  starting up.Jan 20 18:26:48 spark01

sshd[2916]: pam_unix(sshd:session): session  opened for user spark by

(uid=0)Jan 20 18:26:52 spark01 su[2944]: (to root)  spark on pts/1Jan 20

18:26:52 spark01 su[2944]: pam_unix(su-l:session): session  opened for

user root by spark(uid=1000)Jan 20 18:26:56 spark01 polkitd[909]:

Registered Authentication Agent for unix-process:2974:117137 (system bus

name  :1.25Jan 20 18:26:56 spark01 systemd[1]: Starting SYSV: MySQL

database server….—  Subject: Unit mysqld.service has begun start-up—

Defined-By: systemd— Support:

http://lists.freedesktop.org/mailman/listinfo/systemd-devel—— Unit

mysqld.service has begun starting up.Jan 20 18:26:57 spark01

mysqld[2979]: MySQL  Daemon failed to start.Jan 20 18:26:57 spark01

mysqld[2979]: Starting mysqld:  [FAILED]Jan 20 18:26:57 spark01

systemd[1]: mysqld.service: control process  exited, code=exited

status=1Jan 20 18:26:57 spark01 systemd[1]: Failed to start  SYSV: MySQL

database server..— Subject: Unit mysqld.service has failed—

Defined-By: systemd— Support:

http://lists.freedesktop.org/mailman/listinfo/systemd-devel—— Unit

mysqld.service has failed.—— The result is failed.Jan 20 18:26:57

spark01  systemd[1]: Unit mysqld.service entered failed state.Jan 20

18:26:57 spark01  systemd[1]: mysqld.service failed.Jan 20 18:26:57

spark01 polkitd[909]:  Unregistered Authentication Agent for

unix-process:2974:117137 (system bus name  :1.

这些信息并不能提供服务启动失败的真正原因。

查看 MySQL 的告警日志:

2016-01-20T10:00:19.935771Z 0 [ERROR] /usr/sbin/mysqld: Can’t

create/write  to file ‘/var/run/mysqld/mysqld.pid’ (Errcode: 2 - No such

file or  directory)2016-01-20T10:00:19.935795Z 0 [ERROR] Can’t start

server: can’t create  PID file: No such file or directory160120 18:00:20

mysqld_safe mysqld from pid  file /var/run/mysqld/mysqld.pid ended

解决办法

MySQL 服务在启动的时候,不能创建 pid 文件。

在终端看一下该目录是否存在,如果不存在,手动创建:

[root@ ~]# mkdir -p /var/run/mysqld/

再次尝试启动 MySQL 服务,报错如下:

Starting mysqld (via systemctl): Job for mysqld.service

failed because the  control process exited with error code. See

"systemctl status mysqld.service"  and "journalctl -xe" for details.

[FAILED]

查看 MySQL 的告警日志:

2016-01-20T10:28:37.183387Z 0 [ERROR] /usr/sbin/mysqld:

Can’t create/write  to file ‘/var/run/mysqld/mysqld.pid’ (Errcode: 13 -

Permission  denied)2016-01-20T10:28:37.183431Z 0 [ERROR] Can’t start

server: can’t create  PID file: Permission denied160120 18:28:37

mysqld_safe mysqld from pid file  /var/run/mysqld/mysqld.pid ended160120

18:32:06 mysqld_safe Starting mysqld  daemon with databases from

/var/lib/mysql

权限不正确,/var/run/mysqld/ 的属主和属组还是 root,MySQL 并不能在其中创建文件后修改该目录的属主和属组,

[root@ ~]# ls -ld /var/run/mysqld/drwxr-xr-x 2

root root 40 Jan 20 18:28  /var/run/mysqld/[root@ ~]# chown mysql.mysql

/var/run/mysqld/[root@ ~]#  /etc/init.d/mysqld startStarting mysqld (via

systemctl): [ OK ]

不能创建临时文件导致无法启动,错误日志:mysqld: Can't create/write to file '/tmp/ibfguTtC'  (Errcode: 13)

问题描述

MySQL 启动失败,错误日志:mysqld: Can't create/write to file '/tmp/ibfguTtC'  (Errcode: 13)

说明/tmp目录无法写入

解决办法

1、使用命令ll -d /tmp 命令检查目录权限

2、使用 chmod 1777 /tmp 设置为正确权限

再测试可以启动成功

MySQL 服务无法识别导致无法启动,错误提示:mysqld: unrecognized service

问题描述

执行 MySQL 启动命令 service mysqld start 时,提示 mysqld: unrecognized  service(未识别的服务),现象如图:

问题分析

因为 service 命令是通过 /etc/init.d 启动服务目录来调用的,所以我们需要看一下 /etc/init.d 是否存在

mysqld  这个服务,使用 find /etc/init.d/ -name mysqld 命令来查找,发现没有 mysqld 这个文件了

这个就是导致通过 service 命令启动报错的原因了,这时候我们需要将源码包中的 mysql.server 拷贝复制到

/etc/init.d/  下,先使用 find / -name mysql.server 命令来查找下 mysql.server

文件位置,发现是在  /alidata/server/mysql-5.6.21/support-files/mysql.server 中

解决办法

现在我们需要将这个文件复制到 /etc/init.d/ 目录下,改名为 mysqld,并且赋予这个文件可执行权限

最后通过命令chkconfig —add mysqld 添加开机自动启动服务

使用 service mysqld start启动成功

MySQL 配置了过大的内存导致无法启动,错误提示:InnoDB: Cannot allocate memory for the buffer  pool

问题描述

MySQL 启动时报错,查看错误日志有[ERROR] InnoDB: Cannot allocate memory for the buffer  pool(不能从缓存池中分配给innodb引擎需要的内存)

解决办法

需要调整 MySQL 配置文件 my.cnf 中的 "innodb_buffer_pool_size"、"key_buffer_size"  的大小设置,适当的调大内存分配,一般调整为系统内存的一半

先使用 free -m 查看下系统内存大小,查看是 1G 内存

那么 vi /etc/my.cnf,调整"innodb_buffer_pool_size"、"key_buffer_size"各为  500M

注意:my.cnf 以实际配置文件路径为准。

重启 MySQL 服务使其生效

MySQL 启动参数过多导致无法启动,错误提示:Too many arguments (first extra is 'start')

问题描述

主机 Linux 系统安装 MySQL,启动的方式有多种,如果输入/路径/mysqld start —user=mysql 启动后,出现报错:Too  many arguments (first extra is 'start'),则说明这是因为启动 MySQL 的时候参数过多导致。

解决办法

遇到该问题,通过直接输入 /路径/mysqld —user=mysql,的方式启动,如下图:

MySQL 目录权限问题导致无法启动,错误提示:File './mysql-bin.index' not found (Errcode:13 -  Permission denied)

问题描述

MySQL 启动报错,错误日志,如下图

提示的异常为权限异常,我们到 data 目录查看 mysql-bin.index 的权限

正常情况下 data 目录下文件的属主和属组都应该是mysql,目前为 root

备注:不太熟悉权限的朋友可以找一台正常的 MySQL 主机对比下

解决办法

找到问题之后解决起来就比较好办了,授予正确的权限,然后启动 MySQL

MySQL 未初始化导致无法启动,错误提示:can't open the mysql.plugin table

问题描述

MySQL 服务启动时提示:

ERROR! MySQL manager or server PID file could not be found!

Starting MySQL. ERROR! Manager of pid-file quit without updating file.

问题分析

查看错误日志提示:can't open the mysql.plugin table ,please run mysql_upgrade to  create it

解决办法

使用如下命令指定 datadir 与 basedir 进行初始化启动:

/alidata/server/mysql-5.1.73/scripts/mysql_install_db —user=mysql

—datadir=/alidata/server/mysql/data

—basedir=/alidata/server/mysql-5.1.73/

注意:以实际 MySQL 安装路径为准

MySQL 启动成功但未监听端口

问题描述

MySQL 启动成功,使用ps -ef |grep mysql可以看到进程,如下图:

也可以在服务器登陆,如下图:

但是使用 netstat -antp| grep 3306 可以看到没有监听端口。

查看 MySQL 配置文件,端口也没有更改。

解决办法

检查发现是配置文件中使用了 skip-networking,可以看到这个选项的的作用是不监听端口,同主机的用户通过 sockets  进行链接。外部主机由于没有监听端口,将无法连接。

将 skip-networking 注释掉之后,重启 MySQL 可以看到端口监听了。

MySQL ibdata1权限问题导致无法启动,错误日志:InnoDB Operating system error number 13 in a  file operation

问题描述

mysql启动提示 update pid 失败:

Starting MySQL. ERROR! Manager of pid-file quit without updating file.

同时错误日志中记录:

InnoDB Operating system error number 13 in a file operation,如图:

解决办法

从该报错看,是提示操作系统访问文件 /usr/local/mysql/var/idata1 无权限

查看权限如下:

调整为 MySQL 可以访问的权限后,比如 777,或者是调整属帐号为 mysql,可以正常启动 MySQL。

磁盘空间满导致 MySQL 无法启动

问题描述

启动 MySQL 报错:ERROR! MySQL manager or server PID file could not be

found!  Starting MySQL. ERROR! Manager of pid-file quit without updating

file.

查看下 MySQL 错误日志提示:

没有记录有效的信息,磁盘空间不足会导致这种情况

解决办法

df -h看下

find / -size +100M 查看下大于100M的文件

MySQL 日志占用空间太大,无特殊需求可以删除掉。

进程残留导致 MySQL 无法启动

问题描述

MySQL 启动失败,错误提示:Starting MySQL. ERROR! Manager of pid-file quit

without  updating file. [root@iZ9410f0jqiZ bin]# Starting MySQL. ERROR!

Manager of  pid-file quit without updating file.

使用 ps -A | grep mysqld ,发现 mysqld 和 mysqld_safe 进程残留,进程 ID 994 和 1221

解决办法

kill两个进程之后重新启动 MySQL 成功启动

MySQL 服务自动停止

问题描述

服务器上安装的 MySQL,会出现自动停止的情况。出现这种现象,通常是服务器的内存不足导致的。

具体可以通过服务器日志来进行分析排查:

查看服务器的系统日志/var/log/messages

1.tail /var/log/messages

看下在 MySQL 自动停止的时间段内,有什么异常的日志信息,如果日志有提示 “Out of memory” 就可以判定,是服务器的内存使用不足,导致系统自动杀死的 MySQL 的进程

解决办法

通过升级服务器的内存可以解决.

polkit启动失败_Linux MySQL 常见无法启动或启动异常的解决方案相关推荐

  1. apmserv5.2.6 mysql启动失败_win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法...

    win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法 1.APMServ程序所在路径不能含有汉字和空格.例子:D:\r\APMServ5.2.6\ 2.去掉 ...

  2. win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法

    win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法 1.APMServ程序所在路径不能含有汉字和空格.例子:D:\r\APMServ5.2.6\  2.去 ...

  3. yum mysql 启动失败_Linux下MySQL数据库yum升级后无法启动解决办法 | 系统运维

    说明: 操作系统:CentOS 5.8 Web运行环境:Apache+MySQL+PHP(全部使用yum命令在线安装) Apache版本:2.2.3 MySQL版本:5.0.95 PHP版本:5.1. ...

  4. mysql启动失败:mysql服务无法启动 服务没有报告任何错误 解决方法

    My SQL server8.0 安装后,启动失败,提示信息如下: 尝试以下步骤,最终解决问题: 1 查看host文件(C:WindowsSystem32driversetchosts),是否修改过本 ...

  5. 对于Android虚拟机启动失败“The emulator process for AVD Nexus_5X_API_30 was killed”的解决方案

    今天遇到的狗血启动失败,倒霉倒霉倒霉! 搜了半天,网上的帖子好像管用,但好像又不是完全管用,唉 ~ 半小时顺藤摸瓜解决了,分享一下我的方案. Android虚拟机启动失败解决方案: 一. 确保HAXM ...

  6. 计算机管理中be启动不了,绝地求生BE服务启动失败解决方法 绝地求生游戏无法启动怎么办...

    绝地求生BE服务启动失败解决方法,绝地求生游戏无法启动怎么办?绝地求生BE服务启动失败怎么解决?想必不少友友都不太清楚吧?下面跟随小编冉冉一起去看看吧! 绝地求生BE服务启动失败怎么办 过一阵窗口消失 ...

  7. enspac启动失败代码2_解决eNSP路由器AR启动失败错误代码40,交换机正常的问题

    问题描述 eNSP昨晚正常使用,今天上午出现问题:AR路由器启动失败,错误代码40.但交换机可正常启动. eNSP版本:eNSP V100R002C00B510 Setup.exe 操作系统:Wind ...

  8. 启动金蝶显示服务器未启动失败,金蝶云平台加密服务器未启动

    金蝶云平台加密服务器未启动 内容精选 换一换 外部镜像文件在从原平台导出前,没有按照"Windows操作系统的镜像文件限制"的要求完成初始化操作,推荐您使用弹性云服务器完成相关配置 ...

  9. Docker启动失败报错Failed to start Docker Application Container Engine解决方案

    在给一台腾讯云机器安装docker后发现无法启动,总是报错Failed to start Docker Application Container Engine,解决思路分享一下,以免各位童鞋踩坑. ...

  10. polkit启动失败_linux某服务启动失败,提示Authorization not available. Check if polkit...问题解决...

    服务器重启后,开启docker服务,发现无法开启,提示如下 [root@10-13-160-184 ~]# systemctl start docker Authorization not avail ...

最新文章

  1. jquery入门 修改网页背景颜色
  2. 第二节 线程启动、结束、创建线程多个方法、join()、detach()
  3. 下一代防火墙的5个优点
  4. 合肥php开发培训费用,合肥PHP开发培训之PHP文件基础操作
  5. 如何将git上的代码迁移到Coding上
  6. android Too many open files 解决
  7. boost::log::static_type_dispatcher用法的测试程序
  8. 华南理工大学计算机科学与技术,计算机科学与技术
  9. 在线生成抽象话的网页源码
  10. php 9000 端口没起来,PHP无法监听9000端口问题/502错误解决办法
  11. linux 在线考试系统下载,在线考试系统-英文版
  12. 概率假设密度滤波 matlab,概率假设密度滤波的物理空间意义
  13. origin数据平滑_科学网-关于origin曲线平滑处理 lowess-叶小球的博文
  14. 10-C. 商旅信用卡(多重继承)
  15. 企业管理不可忽视“工作日志”
  16. 5G手机芯片如何选择?
  17. “Physically-Based Rendering for Indoor Scene Understanding Using Convolutional Neural Networks”论文阅读
  18. 《神经网络与深度学习》邱希鹏 学习笔记 (1)
  19. 使用Git将本地文件提交到远程仓库
  20. Spring Boot 入门实战教程

热门文章

  1. JavaScript生成PDF
  2. 几款在线脑图制作工具
  3. 南北互联网创业者的差异
  4. 使用python制作属于自己的地铁图
  5. 虚拟机到服务器丢包,虚拟机丢包问题排查处理
  6. java实验三 敏捷开发与XP实践
  7. 国外调查问卷怎么做?
  8. 基于PowerBuilder的病案统计系统的设计与实现
  9. 影视观影神器:ZY Player for Mac使用教程
  10. 我的物联网大学【第五章】:沉默不会爆发,沉默一定会灭亡!