LinuxMySQL常见⽆法启动或启动异常的解决⽅案Linux MySQL 常见⽆法启动或启动异常的解决⽅案
  在 Linux 上⾃建 MySQL 服务器,经常遇到各种⽆法启动或启动后异常的问题,本⽂列举⼀些常见问题的解决办法。
  注意:以下错误⽇志提⽰,都是查看 MySQL 错误⽇志得到,查看⽅法如下:
  查看下 MySQL 配置⽂件 myf 中有记录,⽇志记录在 /alidata/log/mysql/error.log 下
  MySQL 配置⽂件 myf 权限问题导致⽆法启动,错误提⽰:World-writable config file '/etc/myf'  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 配置⽂件 myf 权限问题导致⽆法启动,错误提⽰:World-writable config file '/etc/myf'  is ignored
  问题描述
  主机 Linux MySQL ⽆法启动,报如下错误:
  问题分析
  查看 MySQL 错误⽇志发现如下错误(提⽰ MySQL 库的 host 表⽆法打开):
  查看 /etc/myf 配置⽂件:
  到 MySQL 数据库所在⽬录查看表是否存在:
  发现 MySQL 库的 host 表是存在的,那为什么会提⽰不存在呢?
  问题应该出在 /etc/myf ⽂件上,从第⼀个截图也可以看到警告信息(/etc/myf 被忽视)
  查看⽂件权限:
  原来⽂件权限被设置成 777,因安全问题导致被 MySQL 忽视,所以去查询默认的数据库存放路径,没有 MySQL 库的 host  表导致启动失败:
  解决办法
  将 /etc/myf 权限修改成 644,然后启动 MySQL 即可:
  Binlog 丢失导致⽆法启动,错误⽇志: File './mysql-bin.000001' not found
  问题描述
  清理磁盘空间时删除了全部 binglog ⽇志,导致 MySQL ⽆法启动:
  MySQL 的 errorlog ⾥⾯可以看到错误信息:无法打开文件
  解决办法
  1、注释 Binlog 配置恢复⽅法:
  编辑 /etc/myf,到 log-bin=mysql-bin,在前⾯加#将其注释暂时关闭 binlog,保存修改后启动 MySQL  服务  注意:myf 配置⽂件路径以实际调⽤路径为准
  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.sql 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: