无法重置mysql的root密码

无法重置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......

答案1

首先请尝试使用

mysql -u root -p

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

如果您确实需要重置 mysql 的 root 密码,这里有一个简单的方法 - 使用重新配置包dpkg-reconfigure

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

  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)。这将停止数据库守护进程。然后会出现一个提示,您必须在其中输入新密码并确认重新配置。

    snap1

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

  3. 然后您可以使用以下方式登录:

    mysql -u root -p
    

    并开始数据库管理任务。

参考:

  1. https://help.ubuntu.com/community/MysqlPasswordReset[如页面所示,很快就会被清理。]

  2. Ubuntu 服务器指南与您的特定版本相关。

答案2

参考自此博客:

步骤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

第五步:登录成功后,请执行此命令来更改任意密码。

FLUSH PRIVILEGES;

第六步:您可以更新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

答案3

在 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>

答案4

其余答案似乎对我都不起作用。这是我的解决方案:

sudo service mysql stop
sudo mysqld_safe &
sudo mysql -u root

在那里:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
FLUSH PRIVILEGES;
QUIT;

然后:

sudo killall mysqld
sudo service mysql start
sudo mysql -u root -p

相关内容