本文主要給大家介紹什么是MySQL的權限控制機制,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下什么是mysql的權限控制機制吧。
我們提供的服務有:網(wǎng)站設計、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、臨猗ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的臨猗網(wǎng)站制作公司
權限控制機制
四張表:user db tables_priv columns_priv privilege特權
mysqlmysqlmysqlmysql1.用戶認證
查看mysql.user表
2.權限認證
以select權限為例:
先看 user表里的select_priv權限
Y 不會接著查看其他的表 擁有查看所有庫所有表的權限
N 接著看db表
db
Y 不會接著查看其他的表 擁有查看所有庫所有表的權限
N 接著看tables_priv表
tables_priv
table_priv: 如果這個字段的值里包括select 擁有查看這張表所有
字段的權限,不會再接著往下看了
table_priv:如果這個字段的值里不包括select,接著查看下張表
還需要有column_priv字段權限
columns_priv column_priv: 有select,則只對某一列有select權限 沒有則對所有庫所有表沒有任何權限
db:
mysql> insert into db(host,db,user,Select_priv) values("10.18.44.%",'data','ying','Y');
tables_priv:
mysql> insert into tables_priv(host,db,user,table_name,table_priv) values('10.18.44.%','data','ying','t1','Select,insert');
columns_priv:
mysql> insert into columns_priv(host,db,user,table_name,column_name,column_priv) values('10.18.44.%','data','ying','t1','id','select');
host,db,user,Select_priv
host,db,user,table_name,table_priv
host,db,user,table_name,column_name,column_priv
刷新權限:兩種方式
修改表之后需要刷新權限
方式1:
mysql > flush privileges;
方式2:
五表聯(lián)動(5.7取消了host表)
user表
登錄認證:用戶能否進mysql查看user
權限認證:如果能進,看user表的權限有沒有,沒有就看下一個db表,db表沒有看tables_priv,tables_priv沒有就去看columns_priv
當db表的host字段為空的時候才會用到host表 db或者host 任何一個select是N,都是沒權限
使用命令授權:grant
也可創(chuàng)建新賬戶(不過后面的版本會移除這個功能,建議使用create user)
語法格式:
grant 權限列表 on 庫名.表名 to '用戶名'@'客戶端主機' [identified by '密碼' with option參數(shù)];
==權限列表 all 所有權限(不包括授權權限)
select,update
select(col1), insert(col1,col2) Column level
==數(shù)據(jù)庫.表名 *.* 所有庫下的所有表 Global level web.* web庫下的所有表 Database level web.stu_info web庫下的stu_info表 Table level ==客戶端主機 % 所有主機 192.168.2.% 192.168.2.0網(wǎng)段的所有主機 192.168.2.168 指定主機 localhost 指定主機
with_option參數(shù)
GRANT OPTION: 授權選項
MAX_QUERIES_PER_HOUR: 定義每小時允許執(zhí)行的查詢數(shù)
MAX_UPDATES_PER_HOUR: 定義每小時允許執(zhí)行的更新數(shù)
MAX_CONNECTIONS_PER_HOUR: 定義每小時可以建立的連接數(shù)
MAX_USER_CONNECTIONS: 定義單個用戶同時可以建立的連接數(shù)
mysql> grant select(id),insert(id) on wing.t1 to 'xiaowu'@'172.16.70.%' identified by '123';
mysql> grant select,insert on wing.t1 to 'xiaowu'@'172.16.70.%' identified by '123';
mysql> grant all on wing.t1 to 'xiaowu'@'172.16.70.%' identified by '123';
mysql> grant all on . to 'xiaowu'@'172.16.70.%' identified by '123';
mysql> grant all on . to 'xiaowu'@'172.16.70.%' ;
mysql> grant all on . to 'xiaowu'@'%';
查看權限
看自己的權限:
SHOW GRANTS\G
看別人的權限: SHOW GRANTS FOR admin1@'%'\G
撤銷權限:revoke
語法:
REVOKE 權限列表 ON 數(shù)據(jù)庫名 FROM 用戶名@‘客戶端主機’
mysql> revoke all on *.* from 'xiaowu'@'%'; mysql> revoke delete on *.* from admin1@’%’; //回收部分權限 REVOKE ALL PRIVILEGES ON *.* FROM admin2@’%’; //回收所有權限REVOKE ALL PRIVILEGES,GRANT OPTION ON *.* FROM 'admin2'@'%';
看完以上關于什么是mysql的權限控制機制,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識信息 ,可以持續(xù)關注我們的行業(yè)資訊欄目的。