在我的例子中,我已经将套接字文件移到了内部的另一个位置 /etc/my.cnf 从 /var/lib/mysql/mysql.sock 至 /tmp/mysql.sock 即使重新启动mysqld服务,在尝试连接时仍然会看到错误消息。 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 问题在于客户端的配置方式。运行诊断程序将实际显示正确的套接字路径。如 ps aux | grep mysqld 作品:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
因此,必须按以下方式指定主机:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
30条答案
按热度按时间p8h8hvxi1#
我的问题是我成功地安装了mysql,而且运行良好。
但有一天,同样的错误发生了。
无法通过套接字'/var/lib/mysql/mysql.sock'(2)连接到本地mysql服务器
并且不存在mysql.sock文件。
此解决方案解决了我的问题,mysql重新启动并运行:
以root用户身份登录:
跑步:
测试为根目录:
mysql现在应该已经启动并运行了。
我希望这也能帮助别人。
dgiusagp2#
以下是对我有效的方法:
gcmastyq3#
只需编辑
/etc/my.cnf
将以下行添加到my.cnf
```[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
whhtz7ly4#
在ssh客户机中尝试连接mysql时遇到此问题,当需要在套接字之间切换时,将套接字路径添加到命令中会很有帮助。
eanckbw95#
如果您在sf.net的shell中,请尝试:
更改{letter}和{groupid},如项目管理概要文件的mysql数据库所示。
wvt8vs2t6#
我不得不禁用
explicit_defaults_for_timestamp
从我的.cnf。kjthegm67#
如果您更改/var/lib/mysql中的文件[例如复制或替换该文件],则必须将文件的所有者设置为mysql如果mariadb.service restart失败,这一点非常重要
周恩来mysql:mysql /var/lib/mysql/*
chmod-r 700/var/lib/mysql/*
wqsoz72f8#
在我的例子中,我已经将套接字文件移到了内部的另一个位置
/etc/my.cnf
从/var/lib/mysql/mysql.sock
至/tmp/mysql.sock
即使重新启动mysqld服务,在尝试连接时仍然会看到错误消息。ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
问题在于客户端的配置方式。运行诊断程序将实际显示正确的套接字路径。如ps aux | grep mysqld
作品:不起作用:
您可以通过在下面添加相同的套接字行来解决此问题
[client]
mysql配置中的部分。xmq68pz99#
mysql服务器没有运行,或者不是其套接字文件的位置(请检查my.cnf)。
tyu7yeag10#
确保已启动服务器:
然后与root用户连接:
tjjdgumg11#
您是连接到“localhost”还是“127.0.0.1”?我注意到,当您连接到“localhost”时,使用的是socket连接器,但当您连接到“127.0.0.1”时,使用的是tcp/ip连接器。如果插座连接器未启用/工作,可以尝试使用“127.0.0.1”。
92dk7w1h12#
请检查是否有其他mysql服务正在运行。
8yoxcaq713#
尝试前2、3种解决方案。错误仍然弹出&如果你找不到
/var/lib/mysql/mysql.sock
```find /var/ -name mysql.sock
df
rm /var/cache/*
4si2a6ki14#
请注意,虽然mysql从my.cnf文件中读取socketfile的位置信息,但mysql\u secure\u安装程序有时似乎做得不正确。
因此,如果你像我一样,在安装时把东西混在一起,你可能会遇到这样的情况:你可以用mysql连接到数据库,但是这个东西是不安全的(反正不用那个脚本)。
为了解决这个问题,sreddy的建议很管用:从脚本期望的套接字到它实际所在的位置建立一个软链接。例子:
(我使用/tmp/作为套接字的默认位置)
cfh9epnr15#
再现此错误的一种方法是:如果要连接到外部服务器,而不是连接到不存在的本地服务器:
因此,必须按以下方式指定主机: