1.停止数据库
[root@db01 ~]# /etc/init.d/mysqld stop
2.跳过授权表启动mysql
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
3.尝试创建用户
mysql> create user root@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> grant all on *.* to root@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
4.插入root用户
mysql> insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject) values('localhost','root',PASSWORD('123'),'','','');
insert into mysql.user values ('localhost','root',PASSWORD('123'),
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'',
'',
'',
'',0,0,0,0,'mysql_native_password','','N');
(不好的地方要加--skip-networking,不然数据其他人也能通过远程连接进入数据库,让数据不安全)
方法二:
(刷新,数据库)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to root@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
授权超级用户
grant all on *.* to root@'localhost' identified by '123' with grant option;