mysql各個級別授權的總結

lusklusklusk發表於2019-02-20

記錄許可權的表是user、db、tables_priv、columns_priv

user表記錄的是全部資料庫的許可權

db表記錄的是對某個資料庫的許可權

tables_priv表記錄的是對張表的許可權

column_priv表記錄的是對某表的某列的許可權,列必須要()小括號括起來


mysql沒有類似oracle這樣的connect create session許可權,mysql只要建立了使用者就自動擁有了connect create session許可權

grant執行的授權,不需要flush privileges就可以生效;update mysql.user表執行的授權,必須要flush privileges才能生效



1、全部資料庫授權

mysql> grant select on *.* to user1 identified by '123456';

此時該使用者在user表的select_priv欄位值為Y --select * from mysql.user where user='user1'

備註:
grant all on *.* to user賦予'user'@'%'所有許可權,包括建立create database的許可權,user後面不加任何東西就表示'user'@'%'
grant create on *.* to user就是單獨賦予'user'@'%'建立資料庫和建立所有表的許可權



2、對某個資料庫授權

mysql> grant update on test1.* to user1;

此時該使用者在db表的update_priv欄位值為Y --select * from mysql.db where user='user1'


3、對某張表的授權

mysql> grant insert on test1.t1 to user1;

此時該使用者在tables_priv表的table_priv欄位值為insert --select * from mysql.tables_priv where user='user1'


4、對某表的某列的授權

mysql> grant update (ssl_type) on table test1.t2 to user1;

此時該使用者在tables_priv表的column_priv欄位值為update --select * from mysql.tables_priv where user='user1'

此時該使用者在columns_priv表的column_priv欄位值為update --select * from mysql.columns_priv where user='user1'


5、對儲存過程的授權

mysql> grant create routine on test1.* to user1;

mysql> grant alter routine on test1.* to user1;

mysql> grant execute on test1.* to user1;

對儲存過程的授權,沒發現可以單獨對某一個儲存過程授權,都是對整個資料庫進行授權。都記錄在db表的create_routine_priv、alter_routine_priv、execute_prive

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2636525/,如需轉載,請註明出處,否則將追究法律責任。

相關文章