mysql 报错:
- [root@zabbix ~]# mysql
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket'/var/lib/mysql/mysql.sock' (2)
问题排查总结:
问题 1: mysqld 守护进程是否启动
解决:
- [root@zabbix mysql]# service mysqld start
- Starting mysqld: [ OK ]
- [root@zabbix mysql]# /etc/init.d/mysqld status
- mysqld (pid 2767) is running...
--- 成功启动 --->解决!
-- 启动失败 --->问题 2
[root@zabbix mysql]# /etc/init.d/mysqld start
MySQL Daemon failed to start.
- Starting mysqld: [FAILED]
- [root@zabbix ~]# /etc/rc.d/init.d/mysqld status
- mysqld is stopped
问题 2: 由于异常退出, 导致产生了 mysql 僵尸进程
再次启动时失败,
解决:
清除 / var/run/mysql / 下的僵尸进程 mysqld.pid
和 /var/lock/subsys/mysqld 文件
- [root@zabbix 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
- [root@zabbix 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 的进程运行目录不存在, 或被删除
解决:
- [root@zabbix mysql]# mkdir /var/run/mysqld
- [root@zabbix mysql]# chmod 777 /var/run/mysqld/
问题 6: 权限问题, 对应目录的权限
[root@zabbix mysql]# chmod 777 /var/lib/mysql
问题 7: 关闭 SElinux
- [root@zabbix 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, 从而判断是否真正有这个实例在运行, 更加稳妥
的方法是用进程通讯了, 不过这样的话单单靠脚本就做不到了.
来源: http://www.bubuko.com/infodetail-2769541.html