Can';t通过套接字连接到本地MySQL服务器'/var/lib/mysql/mysql.sock';(2)
当我尝试连接到mysql时,出现以下错误: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连接器。如果套接字连接器未启用/工作,您可以尝试使用
无法通过套接字'/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