无法重置丢失的MySQL root密码

时间:2017-10-31 22:39:54

标签: mysql

我丢失了root密码并尝试重置密码。我有sudo访问权限。阅读其他页面,我正在使用skip-grant-tables选项尝试以下方法:

$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
$ sudo mysqld --skip-grant-tables &
[1] 17849
$ mysql -u root mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[1]+  Exit 1                  sudo mysqld --skip-grant-tables

我在尝试添加-h 127.0.0.1选项时也是如此。我不知道mysqld.sock应该在哪里,如果它不是它试图找到它的地方,我有点迷失在哪里去下一步。

我可以在另一个MySQL用户/ pw上输入MySQL提示符,但该用户无权访问“mysql”数据库以重置密码。

任何帮助?

1 个答案:

答案 0 :(得分:0)

检查this question是否有同样的错误

要恢复密码,您只需按照以下步骤操作:

  1. 使用命令sudo service mysql stop
  2. 停止MySQL服务器进程
  3. 使用命令sudo mysqld_safe -skip-grant-tables -skip-networking&
  4. 启动MySQL服务器
  5. 使用命令mysql -u root
  6. 以root用户身份连接到MySQL服务器

    此时,您需要发出以下MySQL命令来重置root密码:

    mysql> use mysql;
    ​mysql> update user set authentication_string=password('NEWPASSWORD') where user='root';
    ​mysql> flush privileges;
    ​mysql> quit
    

    其中NEWPASSWORD是要使用的新密码。

    • 使用命令sudo service mysql restart重新启动MySQL守护程序。您现在应该可以使用新密码登录MySQL。

    就是这样。您现在可以设置,重置和恢复MySQL密码。

    Reference