MySQL root密码更改

nic*_*ick 67 mysql root mysqladmin

我一直在尝试重置我的MySQL root密码.我运行了mysqld_safe --skip-grant-tables,更新了root密码,并检查了用户表以确保它在那里.一旦重新启动mysql守护程序,我尝试使用我刚设置的新root密码登录,并仍然因用户"root"错误而拒绝访问.我也试过完全删除并重新安装mysql(包括删除my.cnf文件),但仍然没有运气.有没有人对我接下来要做什么有任何建议?

提前致谢

kta*_*kta 93

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');

  • 这在5.7中适用于我,而接受的答案则不然. (6认同)
  • 如果您的 MySQL 根密码设置为空白,这是正确的解决方案。 (4认同)
  • > UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')WHERE user ='root'; > FLUSH特权; 在MySQL版本5.7.x中,mysql表中没有更多的密码字段.它被authentication_string取代. (3认同)
  • 这给了我一个确定,但实际上不做任何事情 (2认同)
  • 它需要一个额外的命令“FLUSH PRIVILEGES”来使更改生效,而无需重新启动数据库服务器。 (2认同)
  • 我只是删除密码功能。 (2认同)

VSB*_*VSB 48

从MySQL参考手册看看这个:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

查看此页面以获取更多信息:重置Root密码:Unix系统

  • ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 '('MyNewPass') WHERE User='root'' 附近使用的正确语法 (13认同)
  • PASSWORD 功能似乎已被删除。请参阅此线程以获取替代方案/sf/ask/3662440351/ (4认同)

nic*_*ick 19

找到了!我更改密码时忘记了密码.我用这个查询来解决我的问题:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

我忘记了PASSWORD('NEW PASSWORD'),只是用纯文本输入新密码

  • 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行 '('NEW PASSWORD') where user='root'' 附近使用的正确语法 (3认同)
  • 任何想法为什么当我使用相同的命令时,会返回以下错误?错误1054(42S22):“字段列表”中的未知列“密码” (2认同)

Rob*_*ana 17

这是WAMP v3.0.6及更高版本的更新答案

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

>FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

在MySQL版本5.7.x中,mysql表中没有更多的密码字段.它被authentication_string取代.

  • 在 MySQL 8.0+ 中,函数 PASSWORD 不能存在。请参阅 /sf/ask/3662440351/ 。因此,您可以使用 CONCAT('*', UPPER(SHA1(UNHEX(SHA1('mypass')))))` 代替 `PASSWORD('mypass')` ,其工作方式与旧的 PASSWORD 函数一样。 (2认同)
  • @FlameStorm 这拯救了这一天。我认为你应该写一个答案。 (2认同)

小智 14

在 MySQL 8.0.4+ 上

更新当前 root 用户:

select current_user();
set password = 'new_password';
Run Code Online (Sandbox Code Playgroud)

更新其他用户:

set password for 'otherUser'@'localhost' = 'new_password';
Run Code Online (Sandbox Code Playgroud)

在更新密码前设置密码策略:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';
Run Code Online (Sandbox Code Playgroud)

更新 root 密码的其他/更好的方法:

mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)

想要坚持使用 5.x 身份验证,以便您仍然可以使用旧版应用程序吗?

在 my.cnf

default_authentication_plugin = mysql_native_password
Run Code Online (Sandbox Code Playgroud)

要更新根:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';
Run Code Online (Sandbox Code Playgroud)


Lok*_*ndu 13

请按照以下步骤操作.

步骤1.停止mysql

第2步. sudo mysqld_safe --skip-grant-tables

第3步.mysql -u root

第4步.use mysql;

STEP5.show tables;

步骤6.describe user;

STEP7.update user set authentication_string=password('1111') where user='root';

使用密码1111登录

  • `flush privileges` 作为最后一步很重要。 (4认同)
  • 步骤 2 - 我建议使用: `sudo mysqld_safe --skip-grant-tables --skip-networking &` 运行以 `&` 结尾的命令非常重要,以便它在后台运行。传递“–skip-networking”选项来跳过阻止其他客户端连接到 MySQL 服务器的网络。[来源](https://www.journaldev.com/39274/change-reset-mysql-mariadb-root-password) (2认同)

Hok*_*cha 13

在 MySQL 8 上,您需要指定密码散列方法:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new-password';
Run Code Online (Sandbox Code Playgroud)

  • 唯一对我有用。 (2认同)

小智 12

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Run Code Online (Sandbox Code Playgroud)

您可以在MySQL文档中找到“ 重置根密码 ”。


Squ*_*.98 11

这对我有用-

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


小智 11

对我来说,只有以下步骤可以帮助我在 8.0.19 版本上设置 root 密码:

mysql
SELECT user,authentication_string FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
FLUSH PRIVILEGES;
SELECT user,authentication_string FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

如果您可以看到 root 用户的更改,则说明有效。来源:无法设置 root 密码 MySQL 服务器


Eag*_*Eye 10

对于 MySQL 5.7.6 及更高版本:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Run Code Online (Sandbox Code Playgroud)

对于 MySQL 5.7.5 及更早版本:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Run Code Online (Sandbox Code Playgroud)


Bam*_*omy 7

我也在附近搜寻,可能有些答案适合某些情况,

我的情况是Ubuntu 18.04.2 LTS系统上的Mysql 5.7:

(获取root特权)

$ sudo bash
Run Code Online (Sandbox Code Playgroud)

(为root数据库用户设置密码+分步实施安全性)

# mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)

(通过密码(而不是套接字)访问root用户)

(+编辑:显然您需要再次设置密码吗?)

(不要将其设置为“ mySecretPassword” !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart
Run Code Online (Sandbox Code Playgroud)

非常感谢zetacu(和erich)提供了出色的答案(搜索了几个小时...)

享受:-D

S.

  • 全新安装后,“mysql_secure_installation”对我有用。 (3认同)

Dar*_*ush 6

使用mysqladmin命令行实用程序更改 MySQL 密码:

mysqladmin --user=root --password=oldpassword password "newpassword"
Run Code Online (Sandbox Code Playgroud)

来源


tk_*_*tk_ 5

您必须重设密码!Mac osx(已测试并工作)和ubuntu的步骤

停止MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop
Run Code Online (Sandbox Code Playgroud)

以安全模式启动它:

$ sudo mysqld_safe --skip-grant-tables
Run Code Online (Sandbox Code Playgroud)

(以上是整个命令)

在此过程完成之前,这将是一个持续执行的命令,因此请打开另一个外壳程序/终端窗口,无需密码即可登录:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
Run Code Online (Sandbox Code Playgroud)

启动MySQL

sudo /usr/local/mysql/support-files/mysql.server start
Run Code Online (Sandbox Code Playgroud)

您的新密码是“密码”。


Suh*_*has 5

对于当前最新的 mysql 版本(8.0.16),这些答案都不适合我。

在查看了几个不同的答案并将它们组合在一起之后,这就是我最终使用的有效方法:

update user set authentication_string='test' where user='root';
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


归档时间:

查看次数:

131773 次

最近记录:

7 年 前