mysql数据库打不开MySQL启动失败的常见原因

MySQL启动失败的常见原因有两种,即无法访问系统资源和参数设置不正确,下面对其进行分析。
1、无法访问系统资源MySQL无法访问启动所需的资源,这是MySQL无法启动的常见原因,比如文件、端口等。
由于Linux中用于启动mysqld进程的mysql用户通常无法登录,因此可以使用类似下面的命令来检查文件访问权限。
sudo-umysqltouch/var/lib/mysql/b发现问题后,修改相应文件或目录的权限或所有者通常可以解决问题。
但有时mysql用户有权访问文件和目录,但仍然拒绝访问,如下例所示:mysql>systemsudo-umysqltouch/home/mysql/data/amysql>createtablet1(idintprimarykey,nvarchar(10)datadirectoryERROR1030(HY000)):Goterror168fromstorageengine测试显示mysql用户有对该目录有访问权限,但是创建文件仍然失败Linux被阻塞,可以看到创建的表不在mysql的默认目录下,所以selinux或者apparmor策略没有该目录的访问权限,此时,你只需要相应地修改策略即可。
当然,有时,即使你有系统资源的访问权限,系统资源也会被阻止。
mysqld--no-defaults--console--usermysql2020-11-03T03:36:07.519419Z0[系统][MY-010116][服务器]/usr/sbin/mysqld(mysqld8.0.19)startingasprocess211712020-11-03T03:36:07.740347Z1[ERROR][MY-012574][InnoDB]Unabletolock./ibdata1error:11出现此错误的原因是另一个mysqld进程已启动并占用了对应的文件2、参数参数设置错误MySQL由于数据设置不正确而无法启动的情况也很常见。
这时,首先应该检查MySQL启动时会调用的参数。
以下命令可以查询MySQL启动时调用参数文件的顺序:$mysqld--verbose--help|grep"Defaultoptions"-A1Defaultoptionsarereadfromthefollowingfilesinthegivenorder:/etc/my.cnf/etc/mysql/my.cnf~/.my.cnf知道了MySQL参数文件的调用顺序,我们就可以检查对应的参数文件,找出文件错误参数可读性不太好,可以使用下面的命令命令显示mysqld程序将调用的参数:$mysqld--print-defaults/usr/sbin/mysqld它将以以下参数开头:...注意该命令将在显示参数后退出,并且不会真正运行mysqld。
该命令与my_print_defaultsmysqld完全相同,只是后者每行显示一个参数。
然后开始调试可疑参数。
我个人想添加的参数和顺序如下:1.在mysqld后面添加第一个参数-no-defaults。
该参数的作用是通知mysqld启动时不要读取任何内容。
参数文件2。
第二个参数是--console。
该参数会将错误信息输出到屏幕上,缺点是所有的信息都输出到屏幕上,使得屏幕看起来很乱,但是很方便我们调试3.第三个参数是--log-error-verbosity=3,将显示详细日志;4.然后添加可靠的参数最后一次只能添加一个参数,然后启动mysqld,使用remove方法逐步检测出错误的参数。
看这个例子:mysqld--no-defaults--console--log-error-verbosity=3--usermysql--gtid_mode=on2020-11-03T07:14:20.384223Z0[注意][MY-010949][服务器]Basedirsetto/usr/.2020-11-03T07:14:20.384254Z0[系统][MY-010116][服务器]/usr/sbin/mysqld(mysqld8.0.19)startingasprocess226172020-11-03T07:14:20.400221Z0[注意][MY-012366][InnoDB]使用LinuxnativeAIO……2020-11-03T07:14:21.632851Z0[错误][MY-010912][服务器]GTID_MODE=ON需要ENFORCE_GTID_CONSISTENCY=ON。
2020-11-03T07:14:21.634183Z0[错误][MY-010119][服务器]正在中止……2020-11-03T07:14:23.026551Z0[System][MY-010910][Server]/usr/sbin/mysqld:Shutdowncomplete(mysqld8.0.19)MySQLCommunityServer-GPL.root@scutech:~#看这个例子我们很容易知道我们需要设置参数GTID_MODE同时和ENFORCE_GTID_CONSISTEN仅当CY打开时同时。

技术分享|MySQL启动失败的常见原因

MySQL启动失败的常见原因主要分为两类:无法访问系统资源和配置错误。
下面将详细分析这两类原因。
如果MySQL无法访问启动所需的资源(例如文件或端口),则可能无法正确启动。
在Linux系统上,用于启动mysqld进程的mysql用户可能无法登录。
此时,您可以使用命令检查文件访问权限,以确认文件是否可以访问。
如果文件权限或所有者已更改,更改这些设置通常可以解决访问问题。
但是,有时即使文件权限正确,mysql用户仍然无法访问该文件。
这可能是由于Linux的SELinux或AppArmor策略阻止访问mysqld进程。
在这些情况下,应修改SELinux或AppArmor策略,或者应暂时禁用这些安全机制。
如果系统资源已经很忙,比如另一个mysqld进程正在使用同名文件,这也会导致MySQL无法启动。
解决办法是终止占用资源的进程并释放占用的文件。
不正确的设置是MySQL启动失败的另一个常见原因。
在查看MySQL启动时会调用哪些参数时,可以通过命令查询参数文件的调用顺序。
了解了参数文件的调用顺序后,可以通过检查参数文件中的参数来识别并纠正错误。
如果设置文件的可读性较差,可以使用命令显示mysqld程序将调用的设置,以便于调试。
调试时,可以按照以下步骤进行:在mysqld后面添加`--no-defaults`参数,以避免读取默认设置文件;添加`--console`参数,将错误信息显示在屏幕上,方便观察;使用`--log-error-verbosity=3`参数获取详细的日志信息;最后,一一尝试其他设置,并用排除法找出不好的设置。
例如,在检查设置时,如果发现需要同时启用`GTID_MODE`和`ENFORCE_GTID_CONSISTENCY`设置才能保证MySQL正常启动。
通过逐步检查和调试设置,可以有效解决MySQL无法启动的问题。