昨天在群里看到有新同学还在问mysql无法启动的问题,于是总结了几个常见情况,权当普及帖了,老鸟自觉飞过。
问题1:目录、文件权限设置不正确 mysql的$datadir目录,及其下属目录、文件权限属性设置不正确,导致mysql无法正常读写文件,无法启动。
错误信息例如:
mysqld_safe starting mysqld daemon with databases from /usr/local/mysql/data/usr/local/mysql/bin/mysqld_safe: line 107: /usr/local/mysql/data/imysql.local.err: permission denied
问题2:端口冲突 已有其他mysqld实例启动,且占用了相同端口,需要修改 port 选项。
错误信息例如:
[error] can't start server: bind on tcp/ip port: address already in use[error] do you already have another mysqld server running on port: 3306 ?[error] aborting
问题3:innodb配置不正确 innodb中关于datafile、log file设置不正确,导致无法启动。尤其是第一次用默认参数启动过,后来又参考一些优化指南后,修改了innodb的参数,会提示different size,详细错误例如:
innodb: error: log file ./ib_logfile0 is of different size 0 5242880 bytesinnodb: than specified in the .cnf file 0 134217728 bytes![error] plugin ‘innodb’ init function returned error.[error] plugin ‘innodb’ registration as a storage engine failed.
问题4:没有初始化mysql系统库 mysql安装完后,需要运行mysql_install_db初始化mysql这个系统库,才能正常启动。
本次先列举上述几个常见问题,下次再补充。
通常地,碰到mysqld进程无法启动时,不管任何错误,都优先检查错误日志(日志文件一般在 $datadir/xx.err文件,或者是 /var/log/message、/var/log/mysql/mysqld.log之类的),根据错误日志提示去找到问题原因,不要只看表面提示,例如找不到 mysql.sock 文件之类的。