MySQL中許可權管理

來源:互聯網
上載者:User

標籤:

許可權管理

MySQL許可權系統通過下面兩個階段進行認證:

  • 對串連的使用者進行身份認證,合法的使用者通過認證,不合法的使用者拒絕串連。
  • 對通過認證的合法使用者授予相應的許可權,使用者可以通過再這些許可權範圍內對資料庫做相應的操作。
    在許可權存取過程中,主要涉及到mysql資料庫下user表和db表。user表的資料結構如下:

    db表資料結構如下:

    表的說明:其中包含使用者列、許可權列、安全列和資源控制列。用的最頻繁的是使用者列和許可權列,許可權分為普通許可權和系統管理權限。普通許可權使用者資料庫的操作如select_priv、insert_priv等。系統管理權限主要用來對資料庫進行管理的操作,比如process_priv、super_priv等。
    使用者進行串連的時候,許可權表的存取過程:

  • 先從user表中的host、user和password這三個欄位中判斷串連的ip、使用者名稱以及密碼是否存在表中,如果存在,則通過驗證,否則拒絕串連。

  • 通過身分識別驗證之後,按照以下許可權表的順序得到資料庫許可權:user->db->tables->priv->columns_priv。全域許可權,覆蓋局部許可權。比如一個使用者在user表中擁有選擇許可權,那麼他將對所有資料中的所有表所有的列都有選擇許可權。

    許可權尋找詳細描述:當使用者通過許可權認證之後,進行許可權分配時候,按照user->db->tables_priv->columns_priv的順序進行許可權分配,即先檢查許可權表user,如果user表中對應的許可權為Y,此時使用者對應所有的資料庫許可權為Y,將不再檢查db、tables_priv、columns_priv;如果為N,則到db表中進行尋找使用者對於具體資料庫許可權,如果得到db中的Y許可權,則不在尋找,否則檢查tables_priv,看該資料庫對應的具體表許可權,如果為Y,則不在尋找,否則檢查columns_priv表,查看對應的具體列許可權。這一點對於我們授予使用者權限很重要。
帳號管理建立使用者

建立使用者,可以使用grant文法建立或者直接操作user表。
方法一:
直接操作use表
insert into user(Host,User,Password) values(“127.0.0.1”,”test”,password(“51testit”));
方法二:
格式 CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
eg:CREATE USER ‘test’@’127.0.0.1’ IDENTIFIED BY ‘51testit’;

建立之後,登入如下:

MySQL加密方式: MYSQL323加密中產生的是16位字串,而在MySQLSHA1中生存的是41位字串,其中是不加入實際的密碼運算中,通過觀察在很多使用者中都攜帶了”“,在實際破解過程中去掉”*”,也就是說MySQLSHA1加密的密碼的實際位元是40位。
Host欄位描述

  • Host值可以是主機名稱或者IP號,或者locahost代表本地主機。
  • 可以再host列值前面使用萬用字元”%”和”_”,”%”代表匹配任何主機,空的Host值等於”%”。如”%.myweb.com”,匹配所有mysql.com域的所有主機。案例如下:
Host User 解析
myweb.wang pps pps,從myweb.wang串連
% pps pps,從任何主機串連
% 任何使用者,從任何主機串連
122.164.35.127 pps pps,從122.164.35.127串連
122.164.35.% pps pps,從122.164.35.類型子網的任何主機串連
查看使用者權限

對於上面建立的test,我沒有進行任何授權操作,當我使用test使用者去操作資料庫時候,發現:

沒有資料庫操作許可權,怎樣才能查看使用者擁有的許可權呢?
查看許可權
方法一:
show grants for [email protected];
方法二:
查看user表中記錄的許可權。
select * from mysql.user where user=’test’ and host=’127.0.0.1’ \G;

授予許可權

文法格式如下:
grant [privilege1|privilege2|all privileges] on dbName|.tableName 或 to [email protected] ;
當給test使用者授予xxpt選擇許可權時候:
grant select On xxpt.* to test.127.0.0.1;
db表發生了變化,新增加一條記錄。但是user表並沒有改變。如下:

此時,可以使用test使用者進行資料查詢操作,但是不能進行增、刪、改。於是授予其關於xxpt資料庫的所有許可權。
grant all privileges on xxpt.* to [email protected];
使用者test許可權如下:

此時可以更新資料

系統管理權限sueper、process、file授予
grant sueper,process,file On . to ‘test’@’127.0.0.1’;
語句中on後面只能是.
備忘:usage 許可權用於登入,不能進行任何操作。

刪除許可權

使用grant新增許可權,使用revoke進行許可權回收。當然回收許可權,也可以直接對user、db、tables_priv和columns_priv表進行操作。但是usage許可權是沒法收回的。
如回收test對所有資料庫的讀寫權限:
revoke select ,insert on . from [email protected];

修改密碼

1.使用mysqladmin
2.使用set password for [email protected] =password(‘isayhello’);
3.通過grant usage
grant usage on . to ‘test’@’127.0.0.1’ identified by ‘isayhello’;
4.直接修改user表
update user set Password=password(“newpassword”) where ***;

補充mysql中許可權

許可權

權限等級

許可權說明

CREATE

資料庫、表或索引

建立資料庫、表或索引許可權

DROP

資料庫或表

刪除資料庫或表許可權

GRANT OPTION

資料庫、表或儲存的程式

賦予許可權選項

REFERENCES

資料庫或表

 

ALTER

更改表,比如添加欄位、索引等

DELETE

刪除資料許可權

INDEX

索引許可權

INSERT

插入許可權

SELECT

查詢許可權

UPDATE

更新許可權

CREATE VIEW

視圖

建立視圖許可權

SHOW VIEW

視圖

查看視圖許可權

ALTER ROUTINE

預存程序

更改預存程序許可權

CREATE ROUTINE

預存程序

建立預存程序許可權

EXECUTE

預存程序

執行預存程序許可權

FILE

伺服器主機上的檔案訪問

檔案存取權限

CREATE TEMPORARY TABLES

伺服器管理

建立暫存資料表許可權

LOCK TABLES

伺服器管理

鎖表許可權

CREATE USER

伺服器管理

建立使用者權限

PROCESS

伺服器管理

查看進程許可權

RELOAD

 

 

伺服器管理

執行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的許可權

REPLICATION CLIENT

伺服器管理

複製許可權

REPLICATION SLAVE

伺服器管理

複製許可權

SHOW DATABASES

伺服器管理

查看資料庫許可權

SHUTDOWN

伺服器管理

關閉資料庫許可權

SUPER

伺服器管理

執行kill線程許可權

 

MYSQL的許可權如何分布,就是針對錶可以設定什麼許可權,針對列可以設定什麼許可權等等,這個可以從官方文檔中的一個表來說明:

許可權分布

可能的設定的許可權

表許可權

‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’

列許可權

‘Select’, ‘Insert’, ‘Update’, ‘References’

過程許可權

‘Execute’, ‘Alter Routine’, ‘Grant’


MySQL中許可權管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.