当前位置: 首页>>技术教程>>正文


无法重置MySQL的root密码

, ,

问题描述

我需要重置本地mysql安装的root密码,但不会让我。我已经试过了:

$ sudo /etc/init.d/mysql stop
 * Stopping MySQL database server mysqld                                                                                                              [ OK ] 
[1]-  Exit 1                  sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
[2]+  Exit 1                  sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
reg@regDesktopHome:~$ sudo mysqld --skip-grant-tables &
[1] 13651
reg@regDesktopHome:~$ 140627 19:02:02 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.

reg@regDesktopHome:~$ mysql -u root mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
reg@regDesktopHome:~$ sudo mysql -u root mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[1]+  Exit 1                  sudo mysqld --skip-grant-tables

如何重置密码?编辑1我得到了这个:

$ ps ax| grep mysql
16515 ?        Ssl    0:00 /usr/sbin/mysqld
16551 pts/23   S+     0:00 grep --color=auto mysql
reg@regDesktopHome:~/semios/v3upgrade$ sudo kill -9 16515
reg@regDesktopHome:~/semios/v3upgrade$ ps ax| grep mysql
16678 ?        Ssl    0:00 /usr/sbin/mysqld
16715 pts/23   S+     0:00 grep --color=auto mysql
reg@regDesktopHome:~/semios/v3upgrade$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

好像进程一杀死我就会自动重启mysql …

最佳方案

首先请尝试使用

mysql -u root -p

并在提示时输入密码(如果您还记得的话)以sql-root用户身份登录(请注意,开关-p用于输入密码)。

如果确实需要重置mysql的root密码,这是一种简单的方法-使用dpkg-reconfigure重新配置软件包。

重置mySQL root密码的简单步骤:

  1. 检查您的mysql-server的版本;

    apt-cache policy mysql-server
    

    并查看显示已安装版本的行以及其他信息。例如对于我的安装是:

    Installed: 5.5.37-0ubuntu0.12.04.1
    

    (据此,我知道我的系统中已安装mysql-server-5.5。)

  2. 使用以下命令开始重新配置:

    sudo dpkg-reconfigure mysql-server-*.*
    

    其中mysql-server-*.*应该替换为您拥有的版本。 (对我来说是mysql-server-5.5)。这将停止数据库守护程序。然后将出现提示,您必须在其中输入新密码并确认重新配置。

    重新配置完成后,守护程序将自动启动。

  3. 然后,您可以登录:

    mysql -u root -p
    

    并启动数据库管理任务。

参考文献:

  1. https://help.ubuntu.com/community/MysqlPasswordReset [将很快按照页面中的指示进行清理。]

  2. Ubuntu Server Guide与您的特定版本有关。

次佳方案

Reference taken from this blog:

步骤1:停止MySQL服务。

sudo service mysql stop

步骤2:杀死所有正在运行的mysqld。

sudo killall -9 mysqld

步骤3:以安全模式启动mysqld。

sudo mysqld_safe --skip-grant-tables --skip-networking &

步骤4:启动mysql客户端

mysql -u root

步骤5:成功登录后,请执行此命令以更改任何密码。

FLUSH PRIVILEGES;

步骤6:您可以更新mysql root密码。

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

对于mysql> 5.7使用它代替上面的方法:

UPDATE mysql.user SET authentication_string=PASSWORD('newpwd') WHERE User='root';

步骤7:请执行此命令。

FLUSH PRIVILEGES;

步骤8:退出mysql控制台

exit

步骤9:杀死mysqld_safe并启动mysql

sudo killall mysqld_safe && sudo service mysql start

第三种方案

在Ubuntu 16.04和mysql-server-5.7下,正确的答案是olafure的最后评论,dpkg-reconfigure mysql-server-5.7不再起作用。

sudo service mysql stop
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root

现在在mysql控制台中>mysql

USE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE user='root';
FLUSH PRIVILEGES;
\q

重新启动良好的mysql进程

sudo killall mysqld
sudo service mysql start

检查您的新密码

mysql -u root -p
Enter password: newpass
mysql>

第四种方案

从MySQL 5.7开始,在初始安装期间,如果将密码保留为空,则对于该用户,身份验证将基于auth_socket插件。

更改密码的正确方法是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9528.html,未经允许,请勿转载。