什麼是mysql的許可權控制機制
閱讀:200
許可權控制機制
四張表:user db tables_priv columns_priv privilege特權
mysql
mysql
mysql
mysql
1.使用者認證
檢視mysql.user表
2.許可權認證
以select許可權為例:
先看 user表裡的select_priv許可權
y 不會接著檢視其他的表 擁有檢視所有庫所有表的許可權
n 接著看db表
dby 不會接著檢視其他的表 擁有檢視所有庫所有表的許可權
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:
mysqladmin flush-privileges -u root -p1
五表聯動(5.7取消了host表)
user表
登入認證:使用者能否進mysql檢視user
許可權認證:如果能進,看user表的許可權有沒有,沒有就看下乙個db表,db表沒有看tables_priv,tables_priv沒有就去看columns_priv當db表的host欄位為空的時候才會用到host表
db或者host 任何乙個select是n,都是沒許可權
使用命令授權:grant
也可建立新賬戶(不過後面的版本會移除這個功能,建議使用create user)
語法格式:
grant 許可權列表 on 庫名.表名 to '使用者名稱'@'客戶端主機' [identified by '密碼' with option引數];
==許可權列表 all 所有許可權(不包括授權許可權)
select,update
select(col1), insert(col1,col2) column level==資料庫.表名 *.* 所有庫下的所有表 global level
web.* web庫下的所有表 database level
web.stu_info web庫下的stu_info表 table level
==客戶端主機 % 所有主機
192.168.2.% 192.168.2.0網段的所有主機
192.168.2.168 指定主機
localhost 指定主機
with_option引數
grant option: 授權選項
max_queries_per_hour: 定義每小時允許執行的查詢數
max_updates_per_hour: 定義每小時允許執行的更新數
max_connections_per_hour: 定義每小時可以建立的連線數
max_user_connections: 定義單個使用者同時可以建立的連線數
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 資料庫名 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測試許可權 Django測試MySQL許可權
我正在學習django教程,我遇到了一些麻煩,因為我使用mysql作為資料庫。在 當我跑的時候python manage.py test polls 我明白了 這是我的設定.py在databases default engine django.db.backends.mysql add postgr...
什麼是CAS機制
參考 cas是英文單詞compare and swap的縮寫,翻譯過來就是比較並替換。更新乙個變數的時候,只有當變數的預期值a和記憶體位址v當中的實際值相同時,才會將記憶體位址v對應的值修改為b。這樣說或許有些抽象,我們來看乙個例子 cas的缺點 1.cpu開銷較大 在併發量比較高的情況下,如果許多...
什麼是mysql儲存過程 什麼是mysql儲存過程
mysql中的儲存過程指的是儲存在資料庫中的sql語句集合,當建立好儲存過程後在執行時提供所需引數,儲存過程就可以以 指定的方式使用引數執行並返回值 在mysql中提供了建立儲存過程的能力。儲存過程是mysql以及其他資料庫管理系統中的強大功能。接下來在文章中將為大家具體介紹mysql中的儲存過程,...