错误信息:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
出现问题原因:
有可能是 my.cnf 配置文件中设置了 [mysqld] 的参数 socket ,而没有设置[client]的参数socket
mysql.sock 文件有什么用:
mysql 支持 socket 和 TCP/IP 连接。那么 mysql.sock 这个文件有什么用呢?连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。/tmp 文件夹属于临时文件,随时可能被删除。
1.TCP 连接(如果报错 /tmp/mysql.sock,你可以尝试这种方式连接)
mysql -uroot -h 127.0.0.1 -p
2.socket 连接
mysql -uroot -p
解决方式:
添加 [client] 配置项,如下所示
[mysqld]
bind-address=0.0.0.0 #如果要远程控制,该设置就默认四个0
port=3306
user=mysql
basedir=/usr/local/src/mysql-8.0.20
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock #(跟这个socket路径一样)
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
[client]
port=3306
socket=/var/lib/mysql/mysql.sock