MySQL8.0中如何重置密码?

可能很多人在MySQL 8.0中修改密码时遇到了很多问题,比如重置密码,还是用的旧的命令去修改密码,导致报错,因为 MySQL 5.7.6 以后废弃了 user 表中的 password 字段和 password() 方法,所以使用旧的方法去重置密码对 mysql 8.0 是不行的。

首先我们先看几个功能,静默安装完成后 MySQL会给我们自动生成一个随机密码,

grep 'temporary password' /var/log/mysqld.log

但因为自动的生成的密码有可能无法直接使用又不方便记忆,所以要修改密码,但修改密码有几种方式。一种是利用生成的密码连上控制台然后跳过下面第一步免密码登录,执行修改的命令来修改密码,另外就是利用免密码手段咯,大同小异。

免密码,首先要配置文件 MySQL 免密码登录,编辑 MySQL 的配置文件(这个得自己找到,一般如下):

vim /etc/my.cnf

在 [mysqld]下加入一行:

skip-grant-tables

保存并退出,执行

service mysqld restart

重启 MySQL 服务后,即可免密码登录到 MySQL 上

mysql -u root -p

提示输入密码时直接敲回车。进入控制台后,

use mysql;
select host, user, authentication_string, plugin from user;

选择 mysql 数据库并打印所有的用户信息,用户信息以一个表格显示,表格中有以下信息:

host:允许用户登录的 ip ‘位置’ % 表示可以远程;
user:当前数据库的用户名;
authentication_string:用户密码(在mysql 5.7.9以后废弃了password字段和password()函数);
plugin:密码加密方式;

通过sql语句将默认的 root 密码置空

use mysql;
update user set authentication_string='' where user='root';

退出 mysql命令行后,删除 /etc/my.cnf 文件刚刚添加的 skip-grant-tables 并保存退出。重启 MySQL 服务并重新登录到 MySQL 上,此时提示输入密码时直接敲回车,因为刚才已经将密码置为空了。

利用 ALTER 修改 root 用户密码,比如 123456 为你设置的新密码,注意这个密码如果设置的比较简单,例如 123456 等等,会设置不成功,它会提示你设置的密码太简单,最好设置成大写字母、数字、符号的组合,这里只是举例。

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

执行完之后会提示你 OK 的话,就代表修改成功了,至此重置密码也就算是完了,你可以使用新设置的密码去登录试试。

我要评论!

想一个你喜欢的昵称。
给一个你的常用邮箱。
想和萌萌哒的TA们说点啥。
  • 发现升级到MySQL 5.7后,这个错误开始发生在随机情况下产生,即便是没有在查询中提供一个日期。 这似乎是因为早期版本的MySQL支持的日期,例如0000-00-00 00:00:00(默认情况下),然而5.7.4引入了对NO_ZERO_DATE设置的一些更改。如果在使用较新的MySQL版本时仍然...
  • 当往数据库中插入语句时,连接池抛出了“com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘xxx’ at row xxx”的异常。 从提示的信息表面上来看,说是什么数据对...
  • 这个东西的比较主要从以下两个方面来看, INSERT IGNORE 与 INSERT INTO 的区别就是 INSERT IGNORE 会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据...
  • 现在的第三方远程数据库管理可视化工具比较多,如:Navicat、SQLyog、MySQL workbench 等,但发现正确的账户信息连接时报 2059 错误,怎么了?这是因为 MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。 此问题有两种方法,一种是更新...
微信扫一扫即可带走我!