当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当前回答
您正在连接到“localhost”还是“127.0.0.1”?我注意到,当您连接到“localhost”时使用套接字连接器,但当您连接到“127.0.0.1”时使用TCP/IP连接器。如果套接字连接器未启用/正在工作,则可以尝试使用“127.0.0.1”。
其他回答
我的问题是,我成功安装mysql,它工作得很好。
但是有一天,同样的错误发生了。
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
没有mysql。Sock文件存在。
这个解决方案解决了我的问题,mysql又开始运行了:
以root用户登录:
sudo su -
Run:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
以root身份测试:
mysql -u root -p
Mysql现在应该启动并运行了。
我希望这也能帮助到其他人。
重现此错误的一种方法:如果您打算连接到外部服务器,但却连接到不存在的本地服务器:
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 ~ $
我使用MyXQL访问Elixir中的数据库。我的实际错误是使用/tmp/mysql。当/etc/my.conf使用/var/lib/mysql/mysql.sock时。
我的解决方案是在Elixir设置中设置一个环境变量: 出口MYSQL_UNIX_PORT = / var / lib / mysql / mysql。sock,这样MyXQL就不会使用它的默认位置。
这种解决方案的原则是,您可以将MyXQL重定向到另一个位置,以避免这种类型的问题。
检查你的mysqld服务是否正在运行,如果没有,启动服务。
如果您的问题没有解决,请查找/etc/my.cnf并按以下方式进行修改,在这里您将看到以socket开头的一行。在进行此更新之前对该文件进行备份。
socket=/var/lib/mysql/mysql.sock
改变
socket=/opt/lampp/var/mysql/mysql.sock -u root
当我用yum重新安装mariadb时,我遇到了这个问题,它将我的/etc/my.cnf.d/client.cnf重命名为/etc/my.cnf.d/client.cnf.rpmsave,但保留/etc/my.cnf不变。
因为我已经在/etc/my.cnf中配置了mysqld的套接字,在/etc/my.cnf.d/client.cnf中设置了自定义路径。
所以安装后,mysql客户端找不到mysql的socket conf,所以它尝试使用默认的socket路径来连接msyqld,这将导致这个问题。
以下是定位此问题的一些步骤。
检查mysqld是否运行ps -aef | grep mysqld
$ps -aef | grep mysqld | grep -v grep
mysql 19946 1 0 09:54 ? 00:00:03 /usr/sbin/mysqld
如果mysqld正在运行,显示它使用的套接字与netstat -ln | grep mysql
$netstat -ln | grep mysql
unix 2 [ ACC ] STREAM LISTENING 560340807 /data/mysql/mysql.sock
检查套接字是否是mysql客户端试图连接。 如果不是,编辑/etc/my.conf.d/client.cnf或my.conf使套接字与mysqld中的套接字相同
[client]
socket=/data/mysql/mysql.sock
你也可以编辑mysqld的套接字,但你需要重新启动或重新加载mysqld。