技术分享 MySQL 启动失败的常见原因
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 MySQL 启动失败的常见原因相关的知识,希望对你有一定的参考价值。
参考技术A mysql 启动失败的最常见的原因有两类,分别是无法访问系统资源和参数设置错误造成的,下面分别分析如下。MySQL 不能访问启动需要的资源是造成而 MySQL 无法启动的一个常见原因,如:文件,端口等。由于 linux 中用于启动 mysqld 进程的 mysql 用户通常是不能登陆的,可以使用类似下面的命令检查文件的访问权限。
找出问题后,修改对应文件或目录的权限或属主后通常可以解决问题。但有时 mysql 用户有访问文件和目录的权限,但仍然会被拒绝访问,例如下面这个例子:
测试说明 mysql 用户有这个目录的访问权限,但创建文件还是失败,这种情况让很多人困惑,这个时候通常是 mysqld 进程的访问被 linux 的 selinux 或 apparmor 给阻止了,大家可以看到创建的表不是在 mysql 的默认目录下面,因此 selinux 或 apparmor 的 policy 里面没有包含这个目录的访问权限,此时只要对应的修改 policy 就行了,当然把 selinux 或 apparmor 停了也行。
有时虽然对系统资源有访问的权限,但系统资源已经被占用:
这个故障产生的原因是另外一个 mysqld 进程已经启动并占用了对应的文件。
参数设置错误造成 MySQL 无法启动的原因也非常常见,此时先要检查 MySQL 启动时会调用的参数,下面的命令可以查询 MySQL 启动时调用参数文件的顺序:
知道了 MySQL 参数文件的调用顺序,我们就可以检查对应的参数文件,找出其中的错误,如果觉得参数文件的可读性不强,可以使用下面的命令显示 mysqld 程序将要调用的参数:
注意这个命令显示完参数后就退出,不会真正运行 mysqld。这个命令和 my_print_defaults mysqld 完全是等价的,只不过后者的显示方式是一行一个参数。
然后开始对可疑的参数进行调试,我个人喜欢加的参数和顺序如下:
看这个例子:
看这个例子,我们很容易知道是需要我们同时设置参数 GTID_MODE 和 ENFORCE_GTID_CONSISTENCY 同时为 on 才行。
CentOS6.9-zabbix3.2启动失败原因及页面没有mysql选择项
环境内核信息:
[[email protected]01 ~]# uname -a Linux lodboyedu-01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
zabbix启动失败的原因
启动时出这 个错误:
[[email protected] zabbix-3.2.7]# /etc/init.d/zabbix_server start /usr/local/sbin/zabbix_server not installed!
解决方案:
1. 首先复制的启动脚本是core目录下的,并不是core5下面的 [[email protected] zabbix-3.2.7]# \cp /server/tools/zabbix-3.2.7/misc/init.d/fedora/core/* /etc/init.d/
2. 复制过来之后,修改启动脚本中的目录信息 [[email protected] zabbix-3.2.7]# vim /etc/init.d/zabbix_server zabbix_agentd也要这样改,两个文件一样 BASEDIR=/usr/local/zabbix ----根据个人情况来改,zabbix软件路径
启动
[[email protected] zabbix-3.2.7]# /etc/init.d/zabbix_server start Starting zabbix_server: [ OK ] [[email protected] zabbix-3.2.7]# /etc/init.d/zabbix_agentd start Starting zabbix_agentd: [ OK ]
zabbix页面没有mysql选择项
php编译中少了参数 /application/php-5.5.32/bin/php -i |grep configure ----- 查看历史的编译记录 [[email protected] php-5.5.32]# ./configure -h |grep mysql ----查看帮助 --with-mysql=DIR Include MySQL support. DIR is the MySQL base mysqlnd the MySQL native driver will be used --with-mysql-sock=SOCKPATH --with-mysqli=FILE Include MySQLi support. FILE is the path to mysql_config. If no value or mysqlnd is passed --enable-embedded-mysqli --with-pdo-mysql=DIR PDO: MySQL support. DIR is the MySQL base directory If no value or mysqlnd is passed as DIR, the --enable-mysqlnd Enable mysqlnd explicitly, will be done implicitly --disable-mysqlnd-compression-support Disable support for the MySQL compressed protocol in mysqlnd --with-zlib-dir=DIR mysqlnd: Set the path to libz install prefix 连接不到mysql数据库的原因: 缺少 --with-mysqli=mysqlnd 模块参数
解决方案:
添加该编译参数
/server/tools/php-5.5.32/ext/mysqli/目录下执行: [[email protected] mysqli]# ./configure --with-mysqli=mysqlnd --with-php-config=/application/php-5.5.32/bin/php-config [[email protected] mysqli]# make && make install
编译完成后修改php.ini中的参数,没有这个参数就加上
[[email protected] php]# vim lib/php.ini extension="mysqli.so"
然后到网页中强制刷新一下,就有选择mysql的一项了
以上是关于技术分享 MySQL 启动失败的常见原因的主要内容,如果未能解决你的问题,请参考以下文章