如何查找我的根MySQL密码?

如何查找我的根MySQL密码?,mysql,ubuntu,Mysql,Ubuntu,我刚刚在Ubuntu上安装了MySQL,根用户无法登录:) 如何恢复或查找我的密码?使用blank作为密码不起作用。您可以通过使用--跳过授权表运行服务器来重置root密码,并通过以root用户身份(或使用sudo)运行以下命令来无需密码登录: #服务停止 #mysqld_safe——跳过授权表& $mysql-u root mysql>使用mysql; mysql>更新用户集身份验证_string=PASSWORD(“YOUR-NEW-ROOT-PASSWORD”),其中user='ROOT

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


如何恢复或查找我的密码?使用blank作为密码不起作用。

您可以通过使用
--跳过授权表运行服务器来重置root密码,并通过以root用户身份(或使用sudo)运行以下命令来无需密码登录:

#服务停止
#mysqld_safe——跳过授权表&
$mysql-u root
mysql>使用mysql;
mysql>更新用户集身份验证_string=PASSWORD(“YOUR-NEW-ROOT-PASSWORD”),其中user='ROOT';
mysql>刷新权限;
mysql>退出
#服务停止
#服务mysql启动
$mysql-u root-p
现在,您应该能够使用新密码以root用户身份登录

也可以在重置密码的用户的
/home/$USER/.mysql\u history
/root/.mysql\u history
中找到重置密码的查询,但上述操作始终有效

注意:在MySQL 5.7之前,该列被称为
password
,而不是
authentication\u string
。将上面的行替换为

mysql>updateuser set password=password(“YOUR-NEW-ROOT-password”),其中user='ROOT';

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

Alex,听起来你是通过“MySQL服务器”元包安装MySQL服务器的。这将通过引用安装最新的包(在我的示例中是mysql-server-5.5)。一、 和您一样,安装时并没有像我预期的那样提示您输入MySQL密码。我想有两个答案:

解决方案#1:按MySQL全名安装:

$ sudo apt-get install mysql-server-5.5

解决方案2:重新配置包

$ sudo dpkg-reconfigure mysql-server-5.5
您必须指定完整的包名。使用元包“mysql服务器”并没有达到我想要的效果。我希望这对某人有所帮助:)


参考资料:

Ubuntu14.04上的MySQL 5.5要求使用与建议稍有不同的命令。简言之:

sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root
然后从MySQL提示符

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

并且还提供了另一种方法。

对于RHEL mysql 5.5:

/etc/init.d/mysql stop

/etc/init.d/mysql start --skip-grant-tables

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

mysql -uroot -pnewpwd

mysql>  

在MYSQL 5.7下,如果您使用MYSQL进行开发,只需:

1.1.1:

$ sudo service mysql stop
2.在--skip grant tables模式下启动mysql:

$ sudo mysqld_safe --skip-grant-tables 
此外,您还可以尝试在“跳过授权表”模式下更改用户表,但我失败了


所以,这只是一个解决办法

Hmm Mysql 5.7.13重置我所做的只是:

$sudo服务mysql停止
停止mysql

$mysqld\u safe--跳过授权表&
启动mysql

$mysql-u root

就像正确的答案一样。然后我所做的就是做@eebbesen做的事

mysql>为root@'localhost'设置密码=密码('NEW-PASSWORD-HERE')


希望它能帮助任何人:)

有一个简单的解决方案

MySql 5.7附带匿名用户,因此您需要重新配置MySql服务器

您可以使用此命令执行此操作

尝试查找临时通行证:

grep 'temporary password' /var/log/mysqld.log
然后:

在这个链接上有更多关于mysql 5.7的信息


其实很简单。你不需要经历很多事情。 只需在终端中运行以下命令,并按照屏幕上的说明进行操作

sudo mysql_secure_installation

下面是设置根密码的最佳方法:步骤3对我来说非常有效

给你的命令

  • sudomysql
  • 从mysql.user中选择用户、认证字符串、插件、主机
  • 将用户“root”@“localhost”用“password”替换为mysql_native_密码
  • 同花顺特权
  • 从mysql.user中选择用户、认证字符串、插件、主机
  • 出口
  • 现在您可以使用根用户的密码“Password”:

  • mysql-u根-p
  • 创建由“密码”标识的用户“sammy”@“localhost”
  • 授予在上的所有特权。使用GRANT选项连接到“sammy”@“localhost”
  • 同花顺特权
  • 出口
  • 测试您的MySQL服务和版本:

    systemctl status mysql.service
    sudo mysqladmin -p -u root version
    

    我要做一个假设,因为我不确定。我认为我的MySQL(运行在最新升级的20.04版本上)甚至没有根。我试过设置一个,我记得有问题。我怀疑没有root用户,如果您以root用户身份登录,它会自动以MySQL root用户身份登录

    我为什么这么想?因为当我使用MySQL-uroot-p时,当我以root身份登录时,它将接受任何密码并以MySQL root用户的身份登录

    我已经证实,在非root用户上尝试这一点是行不通的

    我喜欢这个型号

    编辑2020.12.19:对于我来说,如果您以root用户身份登录,那么为什么会以root用户身份登录MySQL已不再是一个谜。它与身份验证类型有关。MySQL的更高版本配置了MySQL插件“auth_socket”(可能您已经注意到系统上的/run/mysqld/mysqld.sock文件,并对此感到好奇)。该插件使用库auth_socket.SO提供的SO_PEERCRED选项

    如果需要,只需创建/更新密码,就可以恢复到密码身份验证。在下面显示两种方式和选项,以明确说明

    创建用户“valerie”@“localhost”,并用auth_套接字标识

    创建由“密码”标识的用户“valerie”@“localhost”

    @Benjamin我完成了你答案中的所有步骤,但我仍然拒绝了用户'root'@'localhost'的访问-知道为什么吗?对于MySql 5.7:更新MySql.user SET authentication\u string=PASSWORD('MyNewPass'),PASSWORD\u expired='N',其中user='root'和Host='localhost';在尝试了很多次这一切之后,以及下面的
    dpkg
    方法之后,我发现如果我使用sudo进行连接,mysql会接受我的新凭证,因为没有任何效果(顺便说一句,我使用16.04和
    mysql-sever-5.7
    )。i、 e.
    sudomysql-u root-p
    
    sudo mysql_secure_installation
    
    systemctl status mysql.service
    sudo mysqladmin -p -u root version