错误2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
我在Ubuntu 12.04 LTS (Precise Pangolin)上安装了LAMP ,然后在phpMyAdmin上设置root密码。 我忘记了密码,现在我无法登录。 当我尝试通过终端更改密码时,我得到:
错误2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
我该如何解决这个问题? 我无法打开LAMP,卸载或重新安装。
我曾经有这个问题,并通过安装mysql-server
来解决它,所以确保你已经安装了mysql-server
,而不是mysql-client
或其他东西。
该错误意味着文件/var/run/mysqld/mysqld.sock
不存在,如果你没有安装mysql-server
,那么这个文件就不存在了。 但是,如果mysql-server
已经安装并正在运行,那么你需要检查配置文件。
配置文件是:
/etc/my.cnf /etc/mysql/my.cnf /var/lib/mysql/my.cnf
在/etc/my.cnf
,套接字文件config可能是/tmp/mysql.sock
而在/tmp/mysql.sock
中,套接字文件config可能是/var/run/mysqld/mysqld.sock
。 所以,删除或者重命名/etc/mysql/my.cnf
,让mysql使用/etc/my.cnf
,那么问题就解决了。
尝试这个:
mysql -h 127.0.0.1 -P 3306 -u root -p <database>
另外(看它是否运行):
telnet 127.0.0.1 3306
可能这只是my.cnf
文件中的错误配置,位于/etc/somewhere
(取决于Linux发行版 )。
我看到所有这些答案,但没有人提供重置密码和没有被接受的答案的选项。 真正的问题是他忘记了自己的密码,所以他需要重新设置,不要看它是否正在运行(安装与否),因为这些答案的大部分意味着。
重置密码
按照以下步骤操作(如果您忘记了密码,即使您目前不处于这种情况,也可以随时尝试):
-
停止
mysql
sudo /etc/init.d/mysql stop
或者对于其他发行版本:
sudo /etc/init.d/mysqld stop
-
以安全模式启动MySQL
sudo mysqld_safe --skip-grant-tables &
-
使用root登录到MySQL
mysql -uroot
-
选择要使用的MySQL数据库
use mysql;
-
重置密码
update user set password=PASSWORD("mynewpassword") where User='root';
-
刷新权限
flush privileges;
-
重新启动服务器
quit
-
停止并再次启动服务器
Ubuntu和Debian:
sudo /etc/init.d/mysql stop ... sudo /etc/init.d/mysql start
在CentOS,Fedora和RHEL上:
sudo /etc/init.d/mysqld stop ... sudo /etc/init.d/mysqld start
-
用新密码登录
mysql -u root -p
-
输入新的密码,再次享受您的服务器,就像什么都没有发生
这是从重置一个MySQL根密码 。
更新摘自@ Daniel的评论如下:
在MySQL 5.7中,mysql.user表字段中的密码字段被删除了,现在字段名是'authentication_string',所以步骤5应该是:
update user set authentication_string=password('mynewpassword') where user='root';
我尝试了以下步骤:
- 以
super user
身份登录或使用sudo
- 使用gedit打开
/etc/mysql/my.cnf
- 找到
bind-address
,并将其值更改为数据库服务器主机的IP地址。 对我来说,这是localhost
或127.0.0.1
- 保存并关闭文件。
- 回到终端并执行
sudo service mysql start
它为我工作。
我有一个类似的问题。 MySQL不会启动:
sudo service mysql start start: Job failed to start
如果我禁用了apparmor:
sudo aa-complain /etc/apparmor.d/*
问题就消失了。 问题是mysqld试图访问/run/mysqld/mysqld.sock,但是apparmor配置文件只允许/var/run/mysqld/mysqld.sock(/ var / run被symlinked到/ run,所以它们实际上是一样)。 不知道为什么mysqld不使用var路径,因为这是所有配置文件中设置的内容,但是您可以通过将以下内容添加到/etc/apparmor.d/usr.sbin.mysqld
/run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock rw,
我通过杀死mysql
进程来解决这个问题:
ps -ef | grep mysql kill [the id]
然后我再次启动服务器:
sudo /etc/init.d/mysql restart
但start
也是如此:
sudo /etc/init.d/mysql start
然后我以admin
身份登录,我完成了。
我通过执行以下命令解决了这个问题:
mysql.server start
如果你在Mac上,并使用brew来安装mysql,只需使用:
brew services start mysql
不知何故MySQL服务器进程没有创建套接字,或者客户端在错误的地方寻找套接字。
我的第一个建议是检查MySQL服务器是否正在运行。 第二个建议可能是,MySQL服务器是否在另一台主机上运行? 如果是这样,请将-h <hostname>
标志添加到您的MySQL客户端中。
如果MySQL确实在运行,并在本地运行,请检查您的my.cnf
文件。 应该有一个像
socket = /var/run/mysqld/mysqld.sock
看看是否符合你在帖子中提到的套接字位置。
从经验来看,我认为最可能的情况是您的MySQL服务器根本没有运行,或者没有运行在您从终端运行MySQL客户端的主机上。
你的mysql服务器可能没有运行。 通过在终端中输入mysql.server start
来确保它运行。
我必须重新启动生产服务器后才遇到同样的问题。 我在DigitalOcean液滴上运行Debian 8.1(Jessie)。
这是我解决我的问题所做的:
-
检查文件
/var/run/mysqld/mysqld.sock
存在。 如果没有,通过输入touch /var/run/mysqld/mysqld.sock
(这就是我所要做的)手动创建它。 -
所以MySQL进程可以使用这个文件。 通过输入
chown mysql /var/run/mysqld/mysqld.sock
更改所述文件的所有权。 -
一旦完成“2”,输入
service mysql restart
或/etc/init.d/mysql restart
MySQL服务。
经过上述步骤,我的问题就解决了。 我很少有这个问题,可能有更好的办法,所以一定要提供建设性的反馈,如果需要的话:)。
在我的情况下,这是磁盘已满,mysqld无法启动了。
以下是对我有用的东西:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock service mysql restart
这创建了一个链接。
我想每当你得到错误
错误2002(HY000):无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地MySQL服务器
我会建议首先检查你的mysql
守护进程是否正在运行…大部分时间默认情况下不会运行。 你可以通过/etc/init.d/mysqld status
来检查它。
如果没有运行,请先启动它:
.../etc/init.d/mysqld start.
我敢打赌,这将有110%的工作。
如果您使用的是Amazon EC2 ,并且您在实例上遇到此问题,则只需执行以下操作:
sudo yum install mysql-server sudo service mysqld restart
Amazon EC2没有安装服务器(仅安装客户端),所以如果需要在您的实例上安装该服务器,那么请尝试
mysql -u root -p
检查是否工作。
而不是使用本地主机:
mysql -u myuser -pmypassword -h localhost mydatabase
使用127.0.0.1
mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase
(还要注意,-p和mypassword之间没有空格)
请享用 :)
确保你有重要数据库的备份,然后尝试卸载MySQL相关的东西:
apt-get remove --purge mysql\*
然后再次安装它 :
apt-get install mysql-server mysql-client
这对我工作,数据保存。
如果PHP MySQL显示错误,您可能需要重新安装PHP MySQL :
apt-get install php5-fpm php5-mysql
如果您的Linux机器上安装了XAMPP ,请尝试将my.cnf
文件从/opt/lampp/etc/my.cnf
复制到/etc/my.cnf
。
然后,再次运行mysql -u root
…您现在应该拥有正确的套接字并且能够运行MySQL客户端。
我也有这个问题,但我只是做了:
sudo service mysql restart
它为我工作。
在我的情况下,默认端口3306正在被其他进程使用,因此它没有启动。 我停止了其他服务,并做了sudo service mysql start
,它工作正常。 顺便说一句,你可以使用类似sudo lsof -Pn -iTCP:3306
来查看谁可能正在使用该端口。
检查"bind-adress"
参数。
否则尝试命令:
mysql -h 127.0.0.1 -P 3306 -u root -p
-
-h为主机
127.0.0.1
,即localhost -
-P(注意-P为大写)为端口
2206
,也就是MySQL的默认端口
在我的情况下,它通过做一些研发工作:
我可以使用连接到MySQL
root-debian#mysql -h 127.0.0.1 -u root -p
但是它不能使用mysql -u root -p
。
我没有在my.cnf中找到任何bind-address
。 所以我在my.cnf
中插入了参数socket=/var/lib/mysql/mysqld.sock
,这导致了登录问题。
重新启动服务后,它很好:
root@debian:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.6.19 MySQL Community Server (GPL)
我遇到过同样的问题。 有时候,如果您的MySQL服务被关闭,会发生这种情况
所以你必须开始它:
sudo service mysql start
我有同样的问题。 经过多次搜索,我没有找到任何答案。
最后,我检查了/tmp
目录,其权限是755.我将权限更改为777,mysqld启动顺利,没有任何问题。
打开终端并键入:
sudo apt-get purge mysql-client-core-5.6 sudo apt-get autoremove sudo apt-get autoclean sudo apt-get install mysql-client-core-5.5 sudo apt-get install mysql-server
MySQL数据库核心客户端和MySQL服务器包都将是相同的版本5.5。 MySQL Client 5.5和MySQL Server 5.5是Ubuntu 14.04中这些软件包的当前“最佳”版本,由软件包维护者决定。
如果你宁愿安装MySQL Client 5.6和MySQL Server 5.6,你也可以在Ubuntu软件中心找到mysql-client-core-5.6和mysql-server-5.6软件包。 重要的是客户端和服务器版本号在任何一种情况下都匹配。
这对我有效。
mysqld stop mysql.server start
检查你是否有正确的权利:
sudo chmod 755 /var/lib/mysql/mysql
我有同样的问题,这对我工作。 做完这些之后,我就可以启动MySQL了。
Ubuntu 14.04(Trusty Tahr)也一样。
如果你已经安装了XAMPP,安装mysql-server不是解决方案,因为你将会访问另一个MySQL!
你必须使用正确的插座来访问。 通常是这样的:
/opt/lampp/var/mysql/mysql.sock
相反,将其更改为:
/var/run/mysqld/mysqld.sock
现在起作用了…
我已经按照教程在Mac OS X上使用Homebrew安装MariaDB 10.1.16来解决这个问题。
但是不要忘记杀死或卸载MariaDB的旧安装。
如果你的安装是最近的,你应该确认你的安装是否安装了SERVER …作为mysql-server-5.5 ..也许你只安装了“mysql”..这只是客户端而不是服务器。
根据经验,我说你需要检查服务器是否先运行,然后尝试配置MySQL。 最后的解决方案是重新安装MySQL。