mysql报错排查总结

mysql报错:

[[email protected] ~]# mysql

ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)

问题排查总结:

问题1: mysqld 守护进程是否启动

解决:

[[email protected] mysql]# service mysqld start

Starting mysqld: [ OK ]

[[email protected] mysql]# /etc/init.d/mysqld status

mysqld (pid 2767) is running...

---成功启动--->解决!

--启动失败--->问题2

[[email protected] mysql]# /etc/init.d/mysqld start

MySQL Daemon failed to start.

Starting mysqld: [FAILED]

[[email protected] ~]# /etc/rc.d/init.d/mysqld status

mysqld is stopped

问题2:由于异常退出,导致产生了mysql僵尸进程

再次启动时失败,

解决:

清除/var/run/mysql/下的僵尸进程 mysqld.pid

和 /var/lock/subsys/mysqld  文件

[[email protected] mysqld]# ll /var/lock/subsys/mysqld

-rw-r--r--. 1 root root 0 Sep 15 22:17 /var/lock/subsys/mysqld

问题3:/var/lib/mysql/ 日志目录满了

解决:

删除目录下的文件,

或者修改my.cnf配置文件,关闭日志输出

问题4: 配置文件/etc/my.cnf 的    socket 路径不对

不是 /tmp/mysql.sock

[[email protected] mysql]# egrep -i socket /etc/my.cnf

socket = /var/lib/mysql/mysql.sock

socket = /var/lib/mysql/mysql.sock

# All interaction with mysqld must be made via Unix sockets or named pipes.

解决:

创建软连接到对应文件或修改配置文件的socket路径

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

 

问题5:mysql 的进程运行目录不存在,或被删除

解决:

[[email protected] mysql]# mkdir /var/run/mysqld

[[email protected] mysql]# chmod 777 /var/run/mysqld/

问题6:权限问题,对应目录的权限

[[email protected] mysql]# chmod 777 /var/lib/mysql

问题7:关闭SElinux

[[email protected] mysqld]# setenforce 0

....

进程相关知识补充

var/lib/mysql

这些是mysql 的log文件,需要有什么事故的时候可以用这些文件来恢复数据,但是用到的时候会很少,可以修改配置文件不生成bin-log文件,默认的配置文件为my-huge.cnf 在你的/var/lib/mysql/support-files/目录下,vi my-huge.cnf 搜索log-bin 在前面加#号注释掉后就不会产生,log-bin文件了。

/var/lock/subsys作用

关于/var/lock/subsys目录

总的来说,系统关闭的过程(发出关闭信号,调用服务自身的进程)中会检查/var/lock/subsys

下的文件,逐一关闭每个服务,如果某一运行的服务在/var/lock/subsys下没有相应的选项。在系统关闭的时候,会像杀死普通进程一样杀死这个服务。

通过察看/etc/rc.d/init.d下的脚本,可以发现每个服务自己操纵时都会去查看/var/lock/subsys下相应的服务。

很多程序需要判断是否当前已经有一个实例在运行,这个目录就是让程序判断是否有实例运行的标志,比如说xinetd,如果存在这个文件,表示已

经有xinetd在运行了,否则就是没有,当然程序里面还要有相应的判断措施来真正确定是否有实例在运行。

通常与该目录配套的还有/var/run目录,用来存放对应实例的PID,如果你写脚本的话,会发现这2个目录结合起来可以很方便的判断出许多服务

是否在运行,运行的相关信息等等。

实际上,判断是否上锁就是判断这个文件,所以文件存在与否也就隐含了是否上锁。而这个目录的内容并不能表示一定上锁了,因为很多服务在启

动脚本里用touch来创建这个加锁文件,在系统结束时该脚本负责清除锁,这本身就不可靠(比如意外失败导致锁文件仍然存在),我在脚本里一般是结

合PID文件(如果有PID文件的话),从PID文件里得到该实例的PID,然后用ps测试是否存在该PID,从而判断是否真正有这个实例在运行,更加稳妥

的方法是用进程通讯了,不过这样的话单单靠脚本就做不到了。

原文地址:https://www.cnblogs.com/wenyule/p/9653007.html

时间: 2024-08-28 11:40:40

mysql报错排查总结的相关文章

mysql报错问题解决Character set 'utf8mb4' is not a compiled character set

mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file 报错的解决方法 1.由于日常程序使用了字符集utf8mb4,为了避免每次更新时,set names utf8mb4,就把配置文件改了,如下: 增加了mysql客户端的默认字符集设置 [[email protected]~]# vim

解决mysql报错Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

启动mysql 报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 1.先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.另外看看是不是权限问题. 2.确定你的mysql.sock是不是在那个位置,mysql -u 你的mysql用户名 -p -S /var/lib/mysql/

MySQL报错“1366 - Incorrect integer value: '' XXXXXXX' at row 1 ”

出现这个错误是因为我在表中插入了一条含有中文字符的语句: 修改方法: my.ini中查找sql-mode 将 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION", 修改为 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION", 重启mysql后即可 . MySQL报错"1366 - Incorrect int

mysql报错:MySQL server version for the right syntax to use near 'type=InnoDB'

工作中使用sql语句建表时,mysql报了如下错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 1 解决方案: 这个报错是由于某些版本的mysql不支持type写法,将type关键词改成ENGINE 即可. 版权声明:本文为博主原

连接mysql报错:error 2003 (hy000):can't connect to mysql server on 'localhost' (10061)

一.mysql 的bin目录下有个MySQLInstanceConfig.exe,运行就可以进行创建数据库实例,创建实例时也可以生成windows 服务,把服务设置成自动启动就可以了 二.安装在D盘的discuzz!打开后出现上述错误,请问应如何处理?winmysqladmin已经启动,但三色树上有一个小红点如果出现"ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)",说明你的MySQL还没有启动.解决办法

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with 摘要 Linux系统下安装完MySQL,启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with... Linux系统下装完MySQL,然后重启动时报错: 解决方法:  查看cat /etc/h

Mysql报错Forcing close of thread 139 user: 'root'

最近重启服务器的mysql总是报大量的如下错误: 160330  9:14:26 [Warning] /usr/libexec/mysqld: Forcing close of thread 139  user: 'root' 160330  9:14:26 [Warning] /usr/libexec/mysqld: Forcing close of thread 138  user: 'root' 160330  9:14:26 [Warning] /usr/libexec/mysqld: 

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with

Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with 摘要 Linux系统下安装完MySQL,启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with... Linux系统下装完MySQL,然后重新启动动时报错: 解决方法:  查看cat /etc

一看便知linux下mysql报错ERROR 1044: Access denied for user: '@localhost' to database 'mysql'

错误信息:ERROR 1044: Access denied for user: '@localhost' to database 'mysql' linux下解决方案: mysql> use mysql ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql' mysql> exit Bye [[email protected] ~]# service mysqld stop如果该命令不