服務端指南 資料儲存篇 | MySQL(06) 資料庫安全性

樑桂釗發表於2017-04-20

資料庫的安全性,即保護資料庫,防止未經授權或不合法的使用而造成的資料洩漏和更改破壞。因此,保護資料庫的安全性的一般方法是設定使用者標識和許可權控制。

原文地址:服務端指南 資料儲存篇 | MySQL(06) 資料庫安全性
部落格地址:blog.720ui.com/

MySQL 許可權控制,分為兩個步驟。第一步驟,伺服器會檢查是否允許連線。因為建立使用者的時候會加上主機限制,可以限制成本地、某個 IP、某個 IP 段等,只允許從配置的指定地方登入。第二步驟,如果允許連線,那麼 MySQL 會檢查發出的每個請求是否有足夠的許可權執行。舉個例子,假設需要刪除某個表,MySQL 會檢查是否對這個表有刪除操作許可權。

MySQL 為了資料庫的安全性,設定了對資料的存取進行控制的語句,對使用者授權使用 GRANT 語句,收回所授的許可權使用 REVOKE 語句。

GRANT 授予使用者許可權

授予使用者許可權,簡單格式可概括如下。

GRANT <許可權>    
ON <資料庫物件>
TO <使用者>複製程式碼

假設,需要讓普通 DBA 管理某個資料庫的許可權,可以授予這個資料庫的所有許可權。

grant select, insert, update, delete on db_name.* to 'dba'@'localhost'複製程式碼

假設,需要讓高階 DBA 管理某個資料庫的許可權,可以授予這個資料庫的所有許可權。

grant all on db_name.* to 'dba'@'localhost';複製程式碼

假設,需要讓超級管理員管理所有資料庫的許可權。

grant all on *.* to 'dba'@'localhost';複製程式碼

假設,需要讓超級管理員管理所有資料庫的許可權,賦予遠端許可權。

grant all on *.* to 'dba'@'192.168.244.142' identified by 'mypassword' with grant option;複製程式碼

REVOKE 收回使用者許可權

回收使用者許可權,和授予使用者許可權類似,只需要把關鍵字 to 改成 from 即可。

REVOKE <許可權>
ON <資料庫物件>
FROM <使用者>複製程式碼

假設,需要收回普通 DBA 某個資料庫的刪除許可權。

revoke delete on db_name.* from 'dba'@'localhost';複製程式碼

資料庫安全原則

對於資料庫安全問題,需要遵守幾個原則:

  • 遵守最小特權,授予所需要的最小許可權。如果使用者只需要查詢許可權,就不要額外授予新增、更新、刪除許可權,這樣可以防止使用者幹壞事。
  • 需要定期回收許可權或者刪除無用使用者。
  • 建立使用者的時候限制使用者的登入主機,例如限制指定 IP 或內網 IP 網段。

(完)

更多精彩文章,盡在「服務端思維」微信公眾號!

服務端指南 資料儲存篇 | MySQL(06) 資料庫安全性

相關文章