第一步:配置文件中去掉认证
编辑my.cnf服务配置文件
[mysqld]段段中加入 skip-grant-tables语句
第二步:本地root登陆
[root@mysql0006 bin]# ./mysql -uroot -p Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.30-log Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
第三步:查看所有数据库
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
第四步:选择mysql数据库
mysql> use mysql Database changed
第五步:修改密码,因为当前版本password字段已经被authentication_string替换
mysql> update user set password=password("root")where user='root'; ERROR 1054 (42S22): Unknown column 'password' in 'field list' mysql> update user set authentication_string=password("root")where user='root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1
第六步:刷新权限
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
第七步:退出
mysql> quit
第八步:去掉 [mysqld]段段中 skip-grant-tables语句
注意:
修改密码之后,无法立刻操作mysql数据库,退出之后,重新连接mysql
执行语句报错:
You must reset your password using ALTER USER statement before executing this statement
解决方案
set password = password("root");
该问题是由于密码授权过期导致