Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t通过套接字连接到本地MySQL服务器'/var/lib/mysql/mysql.sock';(2)_Mysql_Sockets_Connect - Fatal编程技术网

Can';t通过套接字连接到本地MySQL服务器'/var/lib/mysql/mysql.sock';(2)

Can';t通过套接字连接到本地MySQL服务器'/var/lib/mysql/mysql.sock';(2),mysql,sockets,connect,Mysql,Sockets,Connect,当我尝试连接到mysql时,出现以下错误: 无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器。 是否有解决此错误的方法?原因可能是什么?MySQL服务器没有运行,或者这不是其套接字文件的位置(请检查my.cnf)。您是连接到“localhost”还是“127.0.0.1”?我注意到,当您连接到“localhost”时,会使用套接字连接器,但当您连接到“127.0.0.1”时,会使用TCP/IP连接器。如果套接字连接器未启用/工作,您可以尝试使用

当我尝试连接到mysql时,出现以下错误:

无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器。


是否有解决此错误的方法?原因可能是什么?

MySQL服务器没有运行,或者这不是其套接字文件的位置(请检查my.cnf)。

您是连接到“localhost”还是“127.0.0.1”?我注意到,当您连接到“localhost”时,会使用套接字连接器,但当您连接到“127.0.0.1”时,会使用TCP/IP连接器。如果套接字连接器未启用/工作,您可以尝试使用“127.0.0.1”。

检查您的mysqld服务是否正在运行,如果未运行,请启动该服务

如果您的问题没有得到解决,请查找
/etc/my.cnf
,并按如下方式进行修改,其中您会看到一行以
socket
开头。在执行此更新之前备份该文件

socket=/var/lib/mysql/mysql.sock  
改为

socket=/opt/lampp/var/mysql/mysql.sock -u root
如果您的文件my.cnf(通常在etc文件夹中)正确配置为

socket=/var/lib/mysql/mysql.sock
您可以使用以下命令检查mysql是否正在运行:

mysqladmin -u root -p status
尝试更改您对mysql文件夹的权限。如果您在本地工作,您可以尝试:

sudo chmod -R 777 /var/lib/mysql/

这为我解决了这个问题

很可能
mysql.sock
/var/lib/mysql/
中不存在

如果在其他位置找到相同的文件,请将其符号链接:

例如:我在
/data/mysql\u datadir/mysql.sock

将用户切换到mysql并按如下所述执行:

su mysql

ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock

这就解决了我的问题

如果您的mysql以前正在工作,并且突然停止,只需“重新启动”服务器即可

在我的CentOS VPS上遇到了这个问题。->

不断地

无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器。

尝试了所有技术,最后重新启动服务器修复了问题->

shutdown-r now


希望这有帮助

确保您的mysql服务正在运行

service mysqld start
然后,尝试以下操作之一:

(如果您没有为mysql设置密码)

如果您已经设置了密码

mysql -u root -p

首先输入“service mysqld start”并登录确保
/var
中有足够的空间。如果Mysql demon无法向驱动器写入其他信息,Mysql服务器将无法启动,并导致错误
无法通过socket'/var/lib/Mysql/Mysql.sock'(2)连接到本地Mysql服务器。

考虑使用

expire_logs_days = 10
max_binlog_size = 100M

这将帮助您降低磁盘使用率。

请检查是否正在运行另一个mysql服务。

试试看

echo 0 > /selinux/enforce

我的问题是,我成功地安装了mysql,它工作得很好

但有一天,同样的错误发生了

无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器

并且不存在mysql.sock文件

这个解决方案解决了我的问题,mysql再次启动并运行:

以root用户身份登录:

sudo su -
运行:

以根用户身份进行测试:

mysql -u root -p
mysql现在应该已经启动并运行了


我希望这也能对其他人有所帮助。

请注意,虽然mysql从my.cnf文件中读取socketfile的位置信息,但mysql\u secure\u安装程序有时似乎做得不正确

因此,如果您像我一样,在安装时随意移动,您可能会遇到这样的情况,即您可以使用mysql连接到数据库,但无法确保安全(无论如何都不使用该脚本)

为了解决这个问题,sreddy的建议很有效:从脚本期望套接字的位置创建一个软链接,并将其连接到它实际所在的位置。例如:

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

(我使用/tmp/作为套接字的默认位置)

在我的例子中,我已将套接字文件移动到
/etc/my.cnf
/var/lib/mysql/mysql.sock
/tmp/mysql.sock

即使重新启动mysqld服务,在尝试连接时仍会看到错误消息。
ERROR 2002(HY000):无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器

问题在于客户端的配置方式。运行诊断程序将实际显示正确的套接字路径。例如
ps aux|grep mysqld

作品:

mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
不起作用:

mysql -uroot -p
mysql -uroot -p -hlocalhost

您可以通过在mysql配置中的
[client]
部分下添加相同的套接字来解决此问题。

只需编辑
/etc/my.cnf
将以下行添加到
my.cnf

[mysqld]

socket=/var/lib/mysql/mysql.sock 

[client]

socket=/var/lib/mysql/mysql.sock
重新启动mysql并再次连接

mysql-u用户-p密码数据库-h主机


尝试在SSH客户端中连接mysql时遇到此问题,发现在需要在套接字之间切换时,将套接字路径添加到命令非常有用

> mysql -u user -p --socket=/path/to/mysql5143.sock

它对我起了作用,有以下变化

[mysqld]和my.cnf的[client]中提到的套接字路径相同,然后重新启动mysql

[mysqld] socket=/var/lib/mysql/mysql.sock

[客户]
socket=/var/lib/mysql/mysql.sock

如果磁盘空间不足,这是一个问题。 解决方案是从硬盘中释放一些空间

请阅读更多内容以获得解释:

如果您在LINUX上运行MySQL,请使用disk free命令检查HDD的可用空间:

 df 
如果您得到了类似的结果:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5162828   4902260         0 100% /
udev                    156676        84    156592   1% /dev
/dev/sda3              3107124     70844   2878444   3% /home
这就是问题所在,现在你有了解决办法

由于mysql.sock希望在mysql文件夹中创建,而mysql文件夹几乎总是在根文件夹下,因此由于空间不足,无法实现

如果定期在mysql目录下发出ls命令(在openSUSE 11.1中为/var/lib/mysql),您将得到如下结果:

hostname:/var/lib/mysql #
.protected  IT     files        ibdata1             mysqld.log  systemtemp
.tmp        NEWS   greekDB      mysql               mysqld.pid  test
ARXEIO      TEMP1  ib_logfile0  mysql.sock          polis
DATING      deisi  ib_logfile1  mysql_upgrade_info  restore
mysql.sock文件经常出现和消失(您必须尝试使用ls进行分配,才能使用文件夹中的mysql.sock文件命中实例)

这是由于
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              5162828   4902260         0 100% /
udev                    156676        84    156592   1% /dev
/dev/sda3              3107124     70844   2878444   3% /home
hostname:/var/lib/mysql #
.protected  IT     files        ibdata1             mysqld.log  systemtemp
.tmp        NEWS   greekDB      mysql               mysqld.pid  test
ARXEIO      TEMP1  ib_logfile0  mysql.sock          polis
DATING      deisi  ib_logfile1  mysql_upgrade_info  restore
mysql.server start
mysql -uroot
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 ~ $
find /var/ -name mysql.sock
df
rm /var/cache/*
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
mysql -u root -p
$ sudo systemctl start mariadb
$ sudo systemctl start mysqld
$ mysql -u root -p