linux tmp mysql.sock_Linux连接mysql提示Can't connect to local MySQL server through socket '/tmp/mysql.so...

一、代码

[root@bogon ~]# mysql -uroot -p

Enter password:

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

二、原因是my.cnf配置文件中设置了[mysqld]的参数socket,而没有设置[client]的参数socket

下面是我原本的my.cnf配置文件内容

[mysqld]

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/data/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

修改之后的my.cnf配置文件内容

[client]

port = 3306

socket=/usr/local/mysql/data/mysql.sock

[mysqld]

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/data/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

问题解决现可以使用 mysql -uroot -p成功连接上登录到mysql

三、补充

1、如果mysql -uroot -p连接不上,可是常识一下mysql -uroot -h127.0.0.1 -p,一般可以连接上,如果是远程mysql把127.0.0.1替换为ip地址即可。

2、详细说明

经过测试发现,如果使用mysql -uroot -p连接登录mysql提示错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)时,即使不在my.cnf中设置

[client]

port = 3306

socket=/usr/local/mysql/data/mysql.sock

这个也可以成功连接登录mysql。办法就是使用如下方法

[root@bogon ~]# mysql -uroot -h127.0.0.1 -p

Enter password:

[root@bogon ~]# mysql -uroot -h127.0.0.1 -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 5

Server version: 5.7.22

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

四、课外补充

1.mysql server的套接字文件。

如果不手动配置my.cnf,那么默认的socket一般是DATADIR/mysql.sock,而DATADIR如果没有手动修改,一般默认是/var/lib/mysql目录。不同的mysql版本,可能socket的默认路径是/tmp/mysql.sock。

2.客户端连接时使用的套接字文件。

在Linux上的各种mysql类客户端(例如mysql,mysqladmin,mysqldump,mysqlimport等)连接mysql server时,如果指定的主机名是'localhost',则会使用套接字来连接mysql server。因此,必须为这些客户端指定正确的套接字

3、除了使用[client]指定全局客户端的连接参数,还可以为特定的客户端指定连接参数。例如下面为mysql、mysqldump、mysqladmin这3个客户端分别指定socket连接参数。

[mysql]

socket=/data/mysql.sock

[mysqldump]

socket=/data/mysql.sock

[mysqladmin]

socket=/data/mysql.sock

4、如果使用IP,例如mysql -uroot -h'192.168.100.10'则表示使用TCP/IP协议连接mysql,这时不会使用套接字,就没有套接字找不到的问题。

5、socket文件路径在配置文件中设置不完整:

这一般是由于我们修改了mysql配置“/etc/my.cnf”引起的。比如我们修改了配置文件中“[mysql]”选项下的“socket”参数,而未指定“[client]”、“[mysql]”选项的“socket”参数,导致mysql使用默认的socket文件位置去寻找socket文件,从而导致未找到socket文件而引发此错误

.....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值