• 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

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

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

    有以下两种解决方法,步骤如下。

  • 编辑 /etc/my.cnf ,找到 log-bin=mysql-bin ,在前面加 # 将其注释暂时关闭 binlog ,保存修改后启动MySQL服务。
    提示: my.cnf 配置文件路径以实际调用路径为准
  • 通过清理Binlog索引文件解决,清理命令如下,完清理后启动MySQL服务。
    echo " " > mysql-bin.index
    说明: 也可以通过vim编辑进行清理。

    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日志无法去读,一般由于磁盘空间满,或者权限不正确导致。

  • 执行如下命令查询磁盘空间。
    df -h
  • 查看磁盘空间没有满,则需要ls命令检查文件权限。
  • 执行如下命令,修改文件权限。
    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]

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

  • 使用 systemctl status mysqld.service journalctl -xe 查看服务启动失败的原因。
  • 如果mysqld目录终端看一下是否存在,如果不存在,执行如下命令,手动创建。
    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并不能在其中创建文件后修改该目录的属主和属组。
  • 执行如下命令,修改mysqld目录属性。
    chown mysql.mysql /var/run/mysqld/
  • 执行如下命令,重启mysqld。
    /etc/init.d/mysqld 

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

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

  • 使用命令 ll -d /tmp 命令检查目录权限。
  • 使用 chmod 1777 /tmp 设置为正确权限。
  • 重启MySQL。
  • 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这个文件了。

  • 需要将这个文件复制到 /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启动报错,错误日志如下图所示。

    提示的异常为文件属性权限异常导致。

  • 查看MySQL服务下的 data 目录,确认 mysql-bin.index 的权限是否正常。
  • 正常情况下 data 目录下文件的属主和属组都应该是mysql,如果不是请修改正确的文件属性权限,并重启MySQL。
    提示: 如果对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 命令可以看到没有监听端口。

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

  • 查看MySQL配置文件,确认端口当前MySQL端口号。
  • 通过vim编辑MySQL配置文件将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服务没有访问权限。系统显示类似如下。
  • 调整为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错误日志提示如下图所示。

    MySQL日志文件占用过大磁盘空间,磁盘空间不足导致启动报错。

  • 执行如下命令,查看当前磁盘使用情况。
    df -h 
    系统显示类似如下。
  • 执行如下命令,查看当前所有磁盘空间中大于100M的文件。
    find / -size +100M
    系统显示类似如下。
  • 确认MySQL日志占用过大磁盘空间,且该日志文件无特殊需求时,直接删除即可。
  • 进程残留导致MySQL无法启动

    MySQL启动失败,错误提示“Starting MySQL. ERROR! Manager of pid-file quit without updating file.”  。

    使用 ps -A | grep mysqld 命令 ,发现 mysqld mysqld_safe 进程残留,进程ID分别是 994 1221

    提示: 进程ID在不同服务器环境中可能不同,请根据实际情况为准。

    通过kill命令,结束两个进程,重启MySQL,并确认成功启动。

    MySQL服务自动停止

    服务器上安装的MySQL,会出现自动停止的情况。

    出现这种现象,通常是服务器的内存不足导致的。

  • 执行如下命令,查看服务器的系统日志 /var/log/messages 文件,分析服务器日志来分析。
    tail /var/log/messages
    系统显示类似如下。
    说明: 看下在MySQL自动停止的时间段内,有什么异常的日志信息,如果日志有提示“Out of memory”就可以判定,是服务器的内存使用不足,导致系统自动杀死的MySQL的进程。
  • 最后可以通过升级服务器的内存可以解决。
  • 云服务器ECS
  • ECS实例中的MySQL安装后登录正常,但远程连接MySQL数据库时失败,提示“1045 - Access denied for user 'root'@'****'(using password:YES)”错误怎么办? 如何使用Linux系统的atop监控工具 如何查看Linux系统网络流量负载情况? 访问WordPress网站提示“建立数据库连接时出错”或者“Error establishing a database connection”错误如何处理? 部署MySQL数据库(Linux) 开启或关闭SELinux 重置实例登录密码 重新初始化系统盘