RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:00-21:00
当您遇到问题
关闭右侧工具栏
mysql启动服务失败是什么原因?
    发布时间:2022-08-18   访问量:15755

I .无法访问系统资源


MySQL无法访问启动所需的资源,这是MySQL无法启动的常见原因,比如文件、端口等。由于用于在linux中启动mysqld进程的mysql用户通常无法登录,您可以使用以下命令来检查文件访问权限。

sudo-u MySQL touch/var/lib/MySQL/b

找出问题后,修改相应文件或目录的权限或所有权,通常可以解决问题。但有时mysql用户可以访问文件和目录,但仍然会被拒绝访问,比如下面的例子:

MySQL > system sudo-u MySQL touch/home/MySQL/data/a

mysql >创建表t1(

id int主键,n varchar(10

)数据目录

错误1030 (HY000):从存储引擎获得错误168

它显示mysql用户可以访问这个目录,但是文件的创建仍然失败。这种情况让很多人很困惑。这时候mysqld进程的访问通常会被linux的selinux或者apparmor封锁。可以看到创建的表并不在mysql的默认目录下。因此,selinux或apparmor的策略不包含该目录的访问权限。这时候只需要相应的修改策略,当然停止selinux或者apparmor也是可以的。

虽然有时您可以访问系统资源,但是系统资源已经被占用:

mysqld -无默认值-控制台-用户mysql

2020-11-03t 03:36:07.519419 z 0[系统][MY-010116][服务器] /usr/sbin/mysqld (mysqld 8.0.19)作为进程21171开始

2020-11-03t 03:36:07.740347 z 1[错误] [MY-012574] [InnoDB]无法锁定。/ibdata1错误:11

失败的原因是另一个mysqld进程已经启动并占用了相应的文件。


第二,参数设置错误

由于参数设置错误导致MySQL无法启动也是很常见的。这时候你要先检查一下MySQL启动时会调用的参数。以下命令可以查询MySQL启动时调用参数文件的顺序:

$ mysqld - verbose - help | grep "默认选项"-A 1

默认选项按给定顺序从以下文件中读取:

/etc/my . CNF/etc/MySQL/my . CNF ~/. my . CNF

知道了MySQL参数文件的调用顺序,我们就可以检查相应的参数文件,找出错误。如果我们觉得参数文件的可读性不强,我们可以使用下面的命令来显示mysqld程序要调用的参数:

$ mysqld -打印-默认值

/usr/sbin/mysqld会以下列参数启动:

......

请注意,该命令将在显示参数后退出,并且不会实际运行mysqld。这个命令完全等同于my_print_defaults mysqld,只是后者的显示方式是每行一个参数。

然后开始调试可疑参数。我个人喜欢把参数和顺序补充如下:

1.在mysqld之后添加第一个参数- no-defaults。该参数的作用是通知mysqld在启动时不要读取任何参数文件;

2.第二个参数是- console,它将错误信息输出到屏幕上。这个参数的一个缺点是所有信息都输出到屏幕上,让屏幕看起来很乱,但是对我们调试来说非常方便;

3.第三个参数是-log - log-error-verbosity=3 = 3。此参数将显示详细的日志;

4.然后在后面加上确定的参数。一次只能添加一个参数,然后启动mysqld,用排除法逐步找出错误的参数。