一次mysql的重启失败

- 日理万妓 2021-11-22 07:40 468阅读 0赞

一次mysql的重启失败

近期阿里云一直提示修复漏洞,然后重启了mysql,导致 mysql 无法启动,看到提示

  1. Can't connect to local MySQL server through socket '/tmp/mysql.sock'

是否存在,去目录看,果真不在了,那么只能想法办重新构建一个 mysql.sock 文件了。

解决方式

重新启动 mysql

  1. sudo /etc/init.d/mysql start

提示错误

  1. The server quit without updating PID file (/[FAILED]mysqld/mysqld.pid)

。查看日志文件

  1. cat /var/log/mysqld.log | tail -n 200

发现报错信息为

  1. /usr/local/tools/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory)

发现根本没有 mysqld 这个文件夹,于是新建文件夹,并赋予权限

  1. cd /var/run/
  2. mkdir mysqld
  3. chown -R mysql /var/run/mysqld
  4. chgrp -R mysql /var/run/mysqld

然后启动 mysql

  1. sudo /etc/init.d/mysql start

成功

反思

那么 mysql.sock 是做什么的呢?

mysql.sock 是 mysql 的主机和客户机在同一host上的时候,使用 unix domain socket 做为通讯协议的载体,它比 tcp 快。

Mysql 有两种连接方式:

(1)TCP/IP

(2)socket

对 mysql.sock 来说,其作用是程序与 mysqlserver 处于同一台机器,发起本地连接时可用。

例如你无须定义连接host的具体 IP 得,只要为空或 localhost 就可以。

在此种情况下,即使你改变 mysql 的外部 port 也是一样可能正常连接。

因为你在 my.ini 中或 my.cnf 中改变端口后,mysql.sock 是随每一次 mysql server 启动生成的。已经根据你在更改完 my.cnf 后重启 mysq l时重新生成了一次,信息已跟着变更。

那么对于外部连接,必须是要变更 port 才能连接的。

发表评论

表情:
评论列表 (有 0 条评论,468人围观)

还没有评论,来说两句吧...

相关阅读