背景:新安装的mysql8,授权了root用户可以远程登录,发现root用户无法授权。
解决方案:
- 查看mysql库中的user表
mysql> select * from mysql.user where User='root' and Host='%'\G; #执行的命令,下面是输入内容
*************************** 1. row ***************************
Host: %
User: root
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
ssl_type:
ssl_cipher: 0x
x509_issuer: 0x
x509_subject: 0x
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: caching_sha2_password
authentication_string: $A$005$\
Se0j4gt5eio/Ldo6f0MwfCCmFPdQrx4UUF8lm7JzPU0
password_expired: N
password_last_changed: 2024-07-17 16:56:46
password_lifetime: NULL
account_locked: N
Create_role_priv: Y
Drop_role_priv: Y
Password_reuse_history: NULL
Password_reuse_time: NULL
Password_require_current: NULL
User_attributes: NULL
1 row in set (0.00 sec)
注:通过上面查看明显能看出Grant_priv: N,说明没有Grant权限。
- 解决:
mysql> update mysql.user set Grant_priv='Y' where User='root' and Host='%';
执行update 方法将N改成Y即可,这里需要注意的是用户和主机一定作为条件填写正确,避免造成其他问题。
- 刷新权限并重新登录即可。
mysql> flush privileges;