sus*_*mah 395 mysql lamp phpmyadmin forgot-password mysql-error-2002
我在Ubuntu 12.04 LTS(Precise Pangolin)上安装了LAMP,然后在phpMyAdmin上设置root密码.我忘记了密码,现在我无法登录.当我尝试通过终端更改密码时,我得到:
ERROR 2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
我怎样才能解决这个问题?我无法打开LAMP,卸载它或重新安装它.
tow*_*wry 229
我曾经遇到过这个问题并通过安装解决了这个问题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
Run Code Online (Sandbox Code Playgroud)
在/etc/my.cnf,套接字文件配置可以是/tmp/mysql.sock并且在/etc/mysql/my.cnf套接字文件配置中可以是/var/run/mysqld/mysqld.sock.所以,删除或重命名/etc/mysql/my.cnf,让mysql使用/etc/my.cnf,那么问题可能会解决.
小智 193
试试这个:
mysql -h 127.0.0.1 -P 3306 -u root -p <database>
Run Code Online (Sandbox Code Playgroud)
另外(看看它是否正在运行):
telnet 127.0.0.1 3306
Run Code Online (Sandbox Code Playgroud)
可能只是my.cnf文件中的配置错误/etc/somewhere(取决于Linux发行版).
dav*_*jal 118
我看到所有这些答案,但没有提供重置密码和没有接受的答案的选项.实际的问题是他忘记了密码,所以他需要重置,而不是看它是否正在运行(已安装或未安装),因为大多数这些答案都意味着.
请按照以下步骤操作(如果您真的忘记了密码,可以提供帮助,即使您目前不在这种情况下也可以随时尝试):
停止 mysql
sudo /etc/init.d/mysql stop
Run Code Online (Sandbox Code Playgroud)
或者对于其他分发版本:
sudo /etc/init.d/mysqld stop
Run Code Online (Sandbox Code Playgroud)以安全模式启动MySQL
sudo mysqld_safe --skip-grant-tables &
Run Code Online (Sandbox Code Playgroud)使用root登录MySQL
mysql -uroot
Run Code Online (Sandbox Code Playgroud)选择要使用的MySQL数据库
use mysql;
Run Code Online (Sandbox Code Playgroud)重置密码
-- MySQL version < 5.7
update user set password=PASSWORD("mynewpassword") where User='root';
-- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
update user set authentication_string=password('mynewpassword') where user='root';
Run Code Online (Sandbox Code Playgroud)冲洗特权
flush privileges;
Run Code Online (Sandbox Code Playgroud)重启服务器
quit
Run Code Online (Sandbox Code Playgroud)停止并再次启动服务器
Ubuntu和Debian:
sudo /etc/init.d/mysql stop
...
sudo /etc/init.d/mysql start
Run Code Online (Sandbox Code Playgroud)
在CentOS,Fedora和RHEL上:
sudo /etc/init.d/mysqld stop
...
sudo /etc/init.d/mysqld start
Run Code Online (Sandbox Code Playgroud)使用新密码登录
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)输入新密码,再次享受您的服务器,就像什么都没发生一样
这取自重置MySQL root密码.
更新来自@ Daniel的评论如下:
在MySQL 5.7中,mysql.user表字段中的密码字段已被删除,现在字段名称为'authentication_string',因此步骤5应为:
sudo /etc/init.d/mysql stop
Run Code Online (Sandbox Code Playgroud)
小智 39
我通过执行以下命令解决了这个问题:
mysql.server start
Run Code Online (Sandbox Code Playgroud)
如果您使用的是mac并使用brew来安装mysql,只需使用:
brew services start mysql
Run Code Online (Sandbox Code Playgroud)
dko*_*oes 33
我遇到了类似的问题.mysql无法启动:
sudo service mysql start
start: Job failed to start
Run Code Online (Sandbox Code Playgroud)
如果我禁用apparmor:
sudo aa-complain /etc/apparmor.d/*
Run Code Online (Sandbox Code Playgroud)
问题消失了.问题是mysqld试图访问/run/mysqld/mysqld.sock但是apparmor配置文件只给了/var/run/mysqld/mysqld.sock的权限(/ var/run符号链接到/ run,所以这些实际上是相同).不确定为什么mysqld没有使用var路径,因为这是在所有配置文件中设置的,但你可以通过将以下内容添加到/etc/apparmor.d/usr.sbin.mysqld来解决问题
/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
Run Code Online (Sandbox Code Playgroud)
Mar*_*ltz 30
在我的情况下,磁盘已满,mysqld无法启动.
尝试重启mysql服务.
service mysql restart
要么
服务mysql停止
服务mysql启动
如果它不识别"停止"命令,那么肯定是磁盘空间.您应该在分区mysql中分配一些空间或使磁盘变大.
检查磁盘空间
df -h
小智 28
我通过杀死mysql进程解决了这个问题:
ps -ef | grep mysql
kill [the id]
Run Code Online (Sandbox Code Playgroud)
然后我再次启动服务器:
sudo /etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)
但start也有效:
sudo /etc/init.d/mysql start
Run Code Online (Sandbox Code Playgroud)
然后我登录admin,我完成了.
Wou*_*ter 19
不知何故,MySQL服务器进程没有创建套接字,或者客户端正在寻找错误位置的套接字.
我的第一个建议是检查MySQL服务器是否正在运行.第二个建议可能是MySQL服务器在另一台主机上运行吗?如果是这样,请将-h <hostname>标志添加到终端中的MySQL客户端.
如果MySQL确实正在运行并在本地运行,请检查您的my.cnf文件.应该有像这样的一条线
socket = /var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)
看看它是否与您在帖子中提到的套接字位置匹配.
根据经验,我认为最可能出现的情况是你的MySQL服务器根本没有运行,或者没有在你从终端运行MySQL客户端的同一主机上运行.
Rob*_*Rob 19
在我不得不重新启动生产服务器后,我刚刚遇到了同样的问题.我在DigitalOcean Droplet上运行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或重启MySQL服务/etc/init.d/mysql restart.
完成上述步骤后,我的问题就解决了.我很少遇到这个问题,而且可能有更好的方法,所以如果需要,请务必提供建设性的反馈:).
小智 13
检查"bind-adress"my.cnf中的参数.
否则尝试使用命令:
mysql -h 127.0.0.1 -P 3306 -u root -p
Run Code Online (Sandbox Code Playgroud)
-h表示host 127.0.0.1,即localhost
端口的-P(注意-P为大写)3306,即MySQL的默认端口
M E*_*B O 12
拳头,尝试重新启动它
\n\n\nmysql服务停止
\n
\n\n服务mysql启动
\n
如果以上还不能解决问题,那么现在让我们......
\n完全卸载MySQL
\nsudo apt-get remove --purge mysql\\*\nRun Code Online (Sandbox Code Playgroud)\n重新安装它
\nsudo apt install mysql-server mysql-client\nRun Code Online (Sandbox Code Playgroud)\n测试是否运行
\nsudo mysql\nRun Code Online (Sandbox Code Playgroud)\n安装 PHP 驱动程序
\nsudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-cgi php7.4-cli php7.4-common\nRun Code Online (Sandbox Code Playgroud)\n您可以用 php7.x 或 php8.0.12 或更高版本替换 php7.4\n非常好!
\n\xe2\x9d\x97\xef\xb8\x8f请小心,如果不保存数据,您将丢失数据。如果可能的话,请备份您的数据。
\nUse*_*ser 11
这对我有用:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart
Run Code Online (Sandbox Code Playgroud)
这会创建一个链接.
Mur*_*ala 11
如果您正在使用Amazon EC2,并且您在实例上遇到此问题,那么您只需执行以下操作:
sudo yum install mysql-server
sudo service mysqld restart
Run Code Online (Sandbox Code Playgroud)
Amazon EC2没有安装服务器(仅安装了客户端),因此如果需要在您的实例上安装它,之后尝试
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
检查是否有效.
小智 9
我想每当你收到错误
ERROR 2002(HY000):无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器
我建议先检查你的mysql守护进程是否正在运行......大多数情况下它默认不运行.你可以检查一下/etc/init.d/mysqld status.
如果它没有运行,那么先启动它:
.../etc/init.d/mysqld start.
Run Code Online (Sandbox Code Playgroud)
我打赌它会110%起作用.
确保您拥有重要数据库的备份,然后尝试卸载MySQL相关的东西:
apt-get remove --purge mysql\*
Run Code Online (Sandbox Code Playgroud)
然后再次安装:
apt-get install mysql-server mysql-client
Run Code Online (Sandbox Code Playgroud)
这对我有用,数据保存.
如果PHP MySQL显示错误,您可能需要重新安装PHP MySQL:
apt-get install php5-fpm php5-mysql
Run Code Online (Sandbox Code Playgroud)
而不是使用localhost:
mysql -u myuser -pmypassword -h localhost mydatabase
Run Code Online (Sandbox Code Playgroud)
使用127.0.0.1
mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase
Run Code Online (Sandbox Code Playgroud)
(另请注意,-p和mypassword之间没有空格)
请享用 :)
我也面临着同样的问题,如果mysql server默认情况下您没有运行它,它将再次出现,几秒钟后它将再次停止,因此您再次运行($ sudo service mysql start )命令,如果知道,可以更改。
对于该使用命令
$ sudo service mysql start
Run Code Online (Sandbox Code Playgroud)
(如果需要,请输入用户密码,因为我们使用sudo),然后运行
$ sudo mysql -u root -p (put user password if required )
Run Code Online (Sandbox Code Playgroud)
现在您有了数据库
在我的情况下,默认端口3306正被其他一些进程使用,因此它没有启动.我停止了其他服务并做了之后sudo service mysql start,它工作正常.顺便说一句,您可以使用类似的东西sudo lsof -Pn -iTCP:3306来查看谁可能正在使用该端口.
小智 6
在我的情况下,它通过做一些研发工作:
我可以使用连接到MySQL
root-debian#mysql -h 127.0.0.1 -u root -p
Run Code Online (Sandbox Code Playgroud)
但它没有合作mysql -u root -p.
我bind-address在my.cnf中找不到任何内容.所以我outcommented参数socket=/var/lib/mysql/mysqld.sock中my.cnf这是害我一个问题登录.
重新启动服务后,它很好:
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)
Run Code Online (Sandbox Code Playgroud)
小智 6
我找到了解决方案
在触发命令之前:mysql_secure_installation
sudo systemctl stop mariadb sudo systemctl start mariadbmysql_secure_installation然后它将询问root密码,您只需按 Enter键并设置新的root密码即可.
您缺少创建 /var/run/mysqld 目录的权限。因此,请按如下方式创建并授予权限。
小智 5
检查您是否具有正确的权限:
sudo chmod 755 /var/lib/mysql/mysql
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,这对我有用。完成此操作后,我能够启动MySQL。
小智 5
在 Ubuntu 14.04 (Trusty Tahr) 上也是如此。
如果您安装了 XAMPP,安装 mysql-server 不是解决方案,因为您将访问另一个 MySQL!
您必须使用正确的套接字才能访问。通常是这样的:
/opt/lampp/var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)
相反,将其更改为:
/var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到过同样的问题.如果您的MySQL服务被拒绝,有时会发生这种情况.
所以你必须开始它:
sudo service mysql start
Run Code Online (Sandbox Code Playgroud)
打开终端并输入:
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
Run Code Online (Sandbox Code Playgroud)
MySQL数据库核心客户端和MySQL Server软件包都将是相同的5.5版本。MySQL客户端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软件包。重要的是,在任何情况下,客户端和服务器版本号均匹配。
这对我有用。
在我的情况下,当我运行时,似乎我真的无法杀死mysql进程
sudo service mysql stop
ps -ef | grep mysql
Run Code Online (Sandbox Code Playgroud)
mysql进程总是在那里,它看起来像是阻塞了套接字文件而新的mysql进程本身无法创建它.
所以这有帮助
cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
Run Code Online (Sandbox Code Playgroud)
现在我可以使用登录数据库了
mysql -u root
Run Code Online (Sandbox Code Playgroud)
然后更新root密码:
UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
PS:我无法更新root passwod,看起来像"auth_socket"插件有问题,所以我不得不创建具有完全权限的新用户
insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y", `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y", `Repl_client_priv` = "Y", `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y", `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";
Run Code Online (Sandbox Code Playgroud)
这会创建没有密码的用户"超级",然后您可以连接 mysql -u super
在Debian服务器Jessie上,我的工作解决方案就是这样做
service mysql restart
service mysql reload
Run Code Online (Sandbox Code Playgroud)
以root用户身份
小智 5
对于 CentOS Linux 版本 7.3 mysql.sock 文件路径为/var/lib/mysql/mysql.sock
编辑/etc/my.cnf文件并将其放在条目下面这将解决您的问题。
[client]
user=root
password=Passw0rd
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0
Run Code Online (Sandbox Code Playgroud)
此后重新启动服务
service mysql restart
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1401784 次 |
| 最近记录: |