我如何找到我的root MySQL密码?

Gen*_*nik 69 mysql ubuntu

我刚刚在Ubuntu上安装了MySQL,root用户无法登录:)

我该如何恢复或查找我的密码?使用空白密码不起作用.

Ben*_*nns 135

您可以通过运行服务器来重置root密码,--skip-grant-tables并通过以root身份(或使用sudo)运行以下命令而无需密码登录:

# service mysql stop
# mysqld_safe --skip-grant-tables &
$ mysql -u root
Run Code Online (Sandbox Code Playgroud)
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
Run Code Online (Sandbox Code Playgroud)
# service mysql stop
# service mysql start
$ mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

现在,您应该可以使用新密码以root身份登录.

它也可以发现,在重置密码查询/home/$USER/.mysql_history/root/.mysql_history谁重置密码的用户,但上面永远是可行的.

注意:在MySQL 5.7之前调用列password而不是authentication_string.替换上面的行

mysql> update user set password=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
Run Code Online (Sandbox Code Playgroud)

  • 经过多次尝试所有这些,以及下面的'dpkg`方法,并且让任何工作变得非常沮丧(顺便说一下,我使用16.04和`mysql-sever-5.7`),我注意到mysql会接受我的新凭据如果我用sudo连接.即`sudo mysql -u root -p`没有sudo我得到`访问被拒绝用户'root'@'localhost'.我以前从来没有使用过sudo,我也没有在这里看到它,但经过一个令人沮丧的小时后,这似乎是解决方案. (22认同)
  • @Benjamin我做了你答案中的所有步骤,但我仍然得到用户'root'@'localhost'的拒绝访问 - 任何想法为什么? (4认同)
  • 对于MySql 5.7:UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass'),password_expired ='N'WHERE User ='root'AND Host ='localhost'; (4认同)
  • 对于只能以shell root身份登录的人,请查看此https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16 -04 (3认同)

小智 19

我意识到这是一个旧线程,但我想我会用我的结果更新它.

Alex,听起来你通过元包'mysql-server'安装了MySQL服务器.这将通过引用安装最新的软件包(在我的例子中,mysql-server-5.5).我和你一样,在设置时没有按照我的预期提示输入MySQL密码.我想有两个答案:

解决方案#1:用它的全名安装MySQL:

$ sudo apt-get install mysql-server-5.5
Run Code Online (Sandbox Code Playgroud)

要么

解决方案#2:重新配置包...

$ sudo dpkg-reconfigure mysql-server-5.5
Run Code Online (Sandbox Code Playgroud)

您必须具体指定完整的包名称.使用元包'mysql-server'对我来说没有预期的结果.我希望这可以帮助别人 :)

参考:https://help.ubuntu.com/12.04/serverguide/mysql.html


Ale*_*yuv 12

sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_PASSWORD_HERE';
FLUSH PRIVILEGES;

mysql -u root -p # and it works
Run Code Online (Sandbox Code Playgroud)

  • 这是在ubuntu 16.04 LTS上对我有用的唯一解决方案 (2认同)

eeb*_*sen 7

MySQL的5.5在Ubuntu 14.04所需略有不同的命令,推荐这里.简而言之:

sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root
Run Code Online (Sandbox Code Playgroud)

然后从MySQL提示符

FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('password');
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

所引用的源提供的另一种方法为好.