MySQL 8.0.16 Community Server 密码错误重置处理

mysql版本:Server version: 8.0.16 MySQL Community Servermysql

错误提示:linux

# 登陆mysql,输入密码后sql

mysql -u root -p

mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

提示须要密码验证,访问拒绝,密码错误,正确密码未知,需重置密码。数据库

解决办法:函数

# 默认状况下,mysql安装后,若是密码为空,会自动建立随机密码spa

# 若是密码错误,没法登陆,打开my.ini的将skip-grant-tables放开,linux环境下是/etc/my.cnf,表示无认证登陆插件

mysql -u root -p

# 查看mysql日志文件所在文件置,在error log中,有为root用户随机生成了一个密码日志

select @@log_error;

# 经过grep命令找到随机密码code

grep "password" /var/log/mysqld.log

2019-06-29T14:00:02.600036Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Se4%Fa3r5_rP

# 登陆,用该密码登陆到服务端后,必须立刻修改密码ip

mysql -u root -pSe4%Fa3r5_rP

#(或者,直接跳过上述方式,直接修改密码)

# 进入mysql

use mysql;

# 查看user信息

select host,user,authentication_string from user;

# 若是当前root用户authentication_string字段下有内容,先将其设置为空

update user set authentication_string='' where user='root'

# 密码要包含大写字母,小写字母,数字,特殊符号

ALTER user 'root'@'localhost' IDENTIFIED BY 'Db_user_2019#'

#改完后退出,再登陆便可

mysql -u root -pDb_user_2019#

注意:在mysql 5.7.9之后废弃了password字段和password()函数;authentication_string:字段表示用户密码。

修改为功后,再次到my.ini文件中的将skip-grant-tables注释,开启认证登陆,重启mysql服务;

 

navicat没法链接到mysql

修改密码后,navicat没法链接到mysql,帐号密码都正确,链接报错1251,就连项目程序中也没法链接到mysql数据库。

在MySQL 8.04前,执行:SET PASSWORD=PASSWORD('[新密码]');可是MySQL8.0.4开始,这样默认是不行的。由于以前,MySQL的密码认证插件是“mysql_native_password”,而如今使用的是“caching_sha2_password”。

须要再次修改一次root密码。

解决办法:

# 登陆进入mysql环境

mysql -u root -pDb_user_2019#

# 定位到mysql数据库

use mysql;

# 从新修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Db_user_2019#';

# 刷新权限

FLUSH PRIVILEGES;
相关文章
相关标签/搜索