mysql許可權機制 什麼是mysql的許可權控制機制

2021-10-19 19:37:49 字數 3415 閱讀 3959

什麼是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中的儲存過程,...