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 ~ $
如果你是定期在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
30 回答
您是否连接到“localhost”或“127.0.0.1”?我注意到当你连接到“localhost”时,会使用套接字连接器,但是当你连接到“127.0.0.1”时,会使用TCP / IP连接器 . 如果套接字连接器未启用/工作,您可以尝试使用“127.0.0.1” .
确保您的mysql服务正在运行
然后,尝试以下之一:
(如果你还没有为mysql设置密码)
如果你已经设置了密码
/var/lib/mysql/
中最不可能存在mysql.sock
.如果您在其他位置找到相同的文件,请将其符号链接:
例如:我在
/data/mysql_datadir/mysql.sock
将用户切换到mysql并执行如下所述:
这解决了我的问题
如果您的文件my.cnf(通常在etc文件夹中)已正确配置
您可以使用以下命令检查mysql是否正在运行:
尝试将您的权限更改为mysql文件夹 . 如果您在本地工作,您可以尝试:
这解决了我
MySQL服务器没有运行,或者不是它的套接字文件的位置(请查看my.cnf) .
在我的情况下,我已将套接字文件移动到
/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 config中的
[client]
部分下添加相同的 socket 行来解决此问题 .如果你是最近的RHEL,你可能需要启动mariadb(一个开源的mysql db)而不是mysql db:
然后你应该能够以通常的方式访问mysql:
检查你的mysqld服务是否正在运行,如果没有运行,启动服务 .
如果您的问题没有解决,请查找
/etc/my.cnf
并修改如下,其中您看到以socket
开头的行 . 在执行此更新之前,请备份该文件 .改成
只需编辑
/etc/my.cnf
将以下行添加到my.cnf
重新启动mysql并再次连接
确保
/var
中有足够的空间 . 如果Mysql恶魔无法向驱动器写入其他信息,则mysql服务器将无法启动并导致错误Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
考虑使用
这将有助于您降低磁盘使用率 .
这对我有用:
MariaDB是一个社区开发的MySQL分支,已成为许多发行版中MySQL的默认实现 .
所以首先你应该开始,
如果这失败了,请尝试,
然后启动mysql,
截至今天,在Fedora中,软件包名为
mariadb
. 在Ubuntu中,它被称为mariadb-server
.因此,如果系统中尚未安装它,则可能必须安装它 .
请检查是否有另一个mysql服务正在运行 .
确保启动服务器:
然后用root用户连接:
尝试
如果您更改/ var / lib / mysql中的文件[比如复制或替换],则必须将文件的所有者设置为mysql,如果mariadb.service restart已经发生,这非常重要
如果你的mysql以前工作并且突然停止只是“重新启动”服务器 .
在我的CentOS VPS上遇到了这个问题.->
不断得到
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
尝试了所有技术,最后重启服务器修复了问题 - >
shutdown -r now
希望这可以帮助 !!
首先输入“service mysqld start”并登录
请确保您已正确安装MySQL服务器,我多次遇到此错误,我认为从套接字调试很复杂,我的意思是重新安装它可能更容易 .
如果您使用的是CentOS 7,请按照以下方法安装:
首先,添加mysql社区源代码
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
然后你可以通过
yum install mysql-community-server
安装它使用systemctl启动它:
systemctl start mysqld
我的问题是我成功安装了mysql,它工作正常 .
但是有一天,发生了同样的错误 .
可't connect to local MySQL server through socket ' /var/lib/mysql/mysql.sock'(2)
并且不存在mysql.sock文件 .
This sollution solved my problem and mysql was up and running again:
以root身份登录:
跑:
以root身份测试:
mysql现在应该启动并运行 .
我希望这也可以帮助别人 .
请注意,虽然mysql从my.cnf文件中读取套接字文件的位置信息,但mysql_secure_installation程序似乎有时无法正确执行 .
因此,如果你像我一样在安装时间乱扔东西,你可能会遇到可以用mysql连接到数据库的情况,但事情是无法保证的(不管怎么说都不使用那个脚本) .
为了解决这个问题,sreddy的建议效果很好:从脚本所期望的套接字到实际所在位置的软链接 . 例:
(我使用/ tmp /作为套接字的默认位置)
重现此错误的一种方法:如果您打算连接到外部服务器,而是连接到不存在的本地服务器:
所以你必须像这样指定主机:
这可能是一个愚蠢的建议,但要100%确定您的数据库仍然托管在localhost . 例如,如果网络管理员选择(或更改为)Amazon DB托管,您将需要该主机名!
在尝试连接SSH客户端中的mysql时遇到了这个问题,发现添加套接字路径到命令是有用的,当在套接字之间切换是必要的 .
它对我有用,有以下变化
无论在[mysqld]中提到套接字的路径是什么,在my.cnf中的[client]中都是如此,并重新启动mysql
[mysqld] socket = / var / lib / mysql / mysql.sock
[client] socket = / var / lib / mysql / mysql.sock
如果磁盘空间不足,则会出现此问题 . 解决方案是从HDD中释放一些空间 .
请阅读更多内容以获得解释:
如果您在LINUX上运行MySQL,请使用命令disk free检查HDD的可用空间:
如果你得到这样的东西:
那么这就是问题,现在你有了解决方案!
由于mysql.sock想要在mysql文件夹中创建,因为缺少空间,这几乎总是在根文件夹下无法实现 .
如果你是定期在mysql目录下给ls命令(在openSUSE 11.1在/ var / lib / mysql)你会得到类似的东西:
mysql.sock文件经常出现和消失(您必须尝试使用ls分配来使用文件夹中的mysql.sock文件命中实例) .
这是由磁盘空间不足造成的 .
我希望我会帮助一些人!!!!谢谢!
我不得不从my.cnf中禁用
explicit_defaults_for_timestamp
.首先尝试2,3个解决方案 . 错误是stil弹出&如果你找不到
/var/lib/mysql/mysql.sock
检查/ var /中的可用空间
如果目录已满,则删除一些unusefull文件/目录
可能你的问题现在会排序 .
如果你在sf.net的shell中,请尝试:
更改和,如项目管理员配置文件的MySQL数据库中所示 .
只是陷入同样的问题 - 这就是我如何解决它 .
假设mysqld正在运行,那么问题可能就是mysql客户端不知道在哪里查找套接字文件 .
解决这个问题最直接的方法是将以下行添加到用户的配置文件.my.cnf文件中(在linux上通常位于/ home / myusername下):
如果您没有.my.cnf文件,请创建一个包含以下内容的文件:
在我的例子中,由于我将mysql默认数据文件夹(/ var / lib / mysql)移到了不同的位置(/ data / mysql),我将.my.cnf添加到以下内容中:
希望这可以帮助 .