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

數據庫的安全性,即保護數據庫,防止未經受權或不合法的使用而形成的數據泄漏和更改破壞。所以,保護數據庫的安全性的通常方法是設置用戶標識和權限控制。javascript

原文地址:服務端指南 數據存儲篇 | MySQL(06) 數據庫安全性
博客地址:blog.720ui.com/java

MySQL 權限控制,分爲兩個步驟。第一步驟,服務器會檢查是否容許鏈接。由於建立用戶的時候會加上主機限制,能夠限制成本地、某個 IP、某個 IP 段等,只容許從配置的指定地方登陸。第二步驟,若是容許鏈接,那麼 MySQL 會檢查發出的每一個請求是否有足夠的權限執行。舉個例子,假設須要刪除某個表,MySQL 會檢查是否對這個表有刪除操做權限。mysql

MySQL 爲了數據庫的安全性,設置了對數據的存取進行控制的語句,對用戶受權使用 GRANT 語句,收回所授的權限使用 REVOKE 語句。sql

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';複製代碼

假設,須要讓超級管理員管理全部數據庫的權限,賦予遠程權限。ide

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

REVOKE 收回用戶權限

回收用戶權限,和授予用戶權限相似,只須要把關鍵字 to 改爲 from 便可。ui

REVOKE <權限>
ON <數據庫對象>
FROM <用戶>複製代碼

假設,須要收回普通 DBA 某個數據庫的刪除權限。

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

數據庫安全原則

對於數據庫安全問題,須要遵照幾個原則:

  • 遵照最小特權,授予所須要的最小權限。若是用戶只須要查詢權限,就不要額外授予新增、更新、刪除權限,這樣能夠防止用戶幹壞事。
  • 須要按期回收權限或者刪除無用用戶。
  • 建立用戶的時候限制用戶的登陸主機,例如限制指定 IP 或內網 IP 網段。

(完)

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

相關文章
相關標籤/搜索