创建用户
create user 'clown'@'%' identified by mysql_native_password '123456';
授权
grant all privileges on nacos.* to 'clown'@'%' with grant option;grant select,create,delete,update on nacos.* to 'clown'@'%' with grant option;
收回权限
revoke select,create,delete,grant option on nacos.* from 'clown'@'%';revoke all privileges,grant option from 'clown'@'%';-- 或者revoke all privileges on nacos.* from 'clown'@'%';revoke grant option on nacos.* from 'clown'@'%';
授予什么权限就回收什么权限
grant select on *.* to 'clown'@'%' with grant option;
授予全局权限,权限信息保存在mysql.user表中
select * from mysql.user where user='clown'\G;*************************** 1. row ***************************Host: %User: clownPassword: *06C0BF5B64ECE2F648B5F048A71903906BA08E5CSelect_priv: YInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NReload_priv: NShutdown_priv: NProcess_priv: NFile_priv: NGrant_priv: YReferences_priv: NIndex_priv: NAlter_priv: NShow_db_priv: NSuper_priv: NCreate_tmp_table_priv: NLock_tables_priv: NExecute_priv: NRepl_slave_priv: NRepl_client_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NCreate_user_priv: NEvent_priv: NTrigger_priv: NCreate_tablespace_priv: Nssl_type:ssl_cipher:x509_issuer:x509_subject:max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string:password_expired: N
grant select on nacos.* to 'clown'@'%' with grant option;
授予数据库权限,权限信息保存在mysql.db表中
select * from mysql.db\G;*************************** 1. row ***************************Host: %Db: nacosUser: clownSelect_priv: YInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NGrant_priv: YReferences_priv: NIndex_priv: NAlter_priv: NCreate_tmp_table_priv: NLock_tables_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NExecute_priv: NEvent_priv: NTrigger_priv: N
grant select on nacos.user to 'clown'@'%' with grant option;
授予某张表权限,权限信息保存在mysql.tables_priv表中
select * from mysql.tables_priv;+-----------+-----+-------+------------+----------------+---------------------+--------------+-------------+| Host | Db | User | Table_name | Grantor | Timestamp | Table_priv | Column_priv |+-----------+-----+-------+------------+----------------+---------------------+--------------+-------------+| % |nacos| clown | user | root@localhost | 0000-00-00 00:00:00 | Select,Grant | |+-----------+-----+-------+------------+----------------+---------------------+--------------+-------------+
grant select(name) on nacos.user to 'clown'@'%' with grant option;
授予某个字段的权限,权限信息保存在mysql.columns_priv表中
select * from mysql.columns_priv;+-----------+-----+-------+------------+-------------+---------------------+-------------+| Host | Db | User | Table_name | Column_name | Timestamp | Column_priv |+-----------+-----+-------+------------+-------------+---------------------+-------------+| % |nacos| clown | user | name | 0000-00-00 00:00:00 | Select |+-----------+-----+-------+------------+-------------+---------------------+-------------+
当使用
revoke all privileges on *.* from 'clown'@'%';
回收的只是全局的权限,clown用户其他的权限,比如对nacos数据库的权限,对user表的权限,对某个字段的权限仍然持有。 所以为了回收用户的所有权限,使用
revoke all privileges,grant option from 'clown'@'%';
这是条固定语法,all privileges和grant option必须都有
