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,用排除法逐步找出错误的参数。
上一篇:关于过期域名删除时间调整的通知
下一篇:Mysql 1136错误解决