搜尋
首頁資料庫mysql教程MySQL中的權限詳解

MySQL中的權限詳解

Jan 13, 2018 pm 01:29 PM
mysql詳解

本文主要介紹了MySQL中的權限,包括各個權限所能操作的事務以及操作權限的一些常用命令語句,需要的朋友可以參考下,希望能幫助到大家。

一、前言

   很多文章中會說,資料庫的權限以最小權限為原則,這句話本身沒有錯,但是卻是一句空話。因為最小權限,這個東西太抽象,很多時候你並無法弄清楚具體他需要哪些權限。 現在很多mysql都用root帳號在操作,並不是大家不知道用root權限太大不安全,而是很多人並不知道該給什麼樣的權限既安全又能保證正常運作。所以,本文更多的是考慮這種情況下,我們該如何簡單的配置一個安全的mysql。註:本文測試環境為mysql-5.6.4
二、Mysql權限介紹

   mysql中存在4個控制權限的表,分別為user表,db表,tables_priv表,columns_priv表。

   mysql權限表的驗證流程為:

1.先從user表中的Host,User,Password這3個欄位判斷連線的ip、使用者名稱、密碼是否存在,存在則通過驗證。

2.通過身分認證後,進行權限分配,依照user,db,tables_priv,columns_priv的順序進行驗證。即先檢查全域權限表user,如果user中對應的權限為Y,則此使用者對所有資料庫的權限都為Y,將不再檢查db, tables_priv,columns_priv;如果為N,則到db表中檢查此使用者對應的特定資料庫,並得到db中為Y的權限;若db中為N,則檢查tables_priv中此資料庫對應的具體表,取得表中的權限Y,以此類推。

三、mysql有哪些權限

201557120429872.jpg (698×734)

201557120509083.jpg (702×342)

四、資料庫層面(db表)的權限分析

201557120536129.jpg (699×737)

#五、mysql安全配置方案

   1 限制存取mysql連接埠的ip

   windows可以透過windows防火牆或ipsec來限制,linux下可以透過iptables來限制。

   2 修改mysql的連接埠

   windows下可以修改設定檔my.ini來實現,linux可以修改設定檔my.cnf來實現。

   3 為所有使用者設定強密碼並嚴格指定對應帳號的存取ip

   mysql中可在user表中指定使用者的存取可存取ip

   4 root特權帳號的處理

   建議為root帳號設定強密碼,並指定只容許本機登入

   5 日誌的處理

   如需可開啟查詢日誌,查詢日誌會記錄登入和查詢語句。

   6 mysql程序執行帳號

   在windows下禁止使用local system來執行mysql帳戶,可以考慮使用network service或自行新建帳號,但是必須給與mysql程式所在目錄的讀取取權限和data目錄的讀取和寫入權限; 在linux下,新建一個mysql帳號,並在安裝的時候就指定mysql以mysql帳號來運行,給與程式所在目錄的讀取權限,data所在目錄的讀取和寫入權限。

   7 mysql運行帳號的磁碟權限

1)mysql運行帳號需要給予程式所在目錄的讀取權限,以及data目錄的讀取和寫入權限
2)不容許給予其他目錄的寫入和執行權限,特別是有網站的。
3)取消mysql運行帳戶對於cmd,sh等一些程式的執行權限。

   8 網站所使用的mysql帳戶的處理

   新建一個帳戶,給予帳戶在所使用資料庫的所有權限即可。這樣既能確保網站對所對應的資料庫的全部操作,也能保證帳戶不會因為權限過高而影響安全。給予單一資料庫的所有權限的帳戶不會擁有super, process, file等管理權限的。 當然,如果能很明確是的知道,我的網站需要哪些權限,還是不要多給權限,因為很多時候發布者並不知道網站需要哪些權限,我才建議上面的配置。而且我指的通用的,具體到只有幾台機器,不多的情況下,我個人建議還是給予只需要的權限,具體可參考上面的表格的建議。

   9 刪除無用資料庫

   test資料庫對新建的帳戶預設有權限
六、mysql入侵提權分析及防止措施

#一般來說,mysql的提權有這麼多種方式:

   1 udf提權

   此方式的關鍵導入一個dll文件,個人認為只要合理控制了進程帳戶對目錄的寫入權限即可防止被導入dll文件;然後如果萬一被攻破,此時只要進程帳戶的權限夠低,也沒辦執行高風險操作,如新增帳戶等。

   2 寫入啟動檔案

   這種方式同上,還是要合理控制進程帳號對目錄的寫入權限。

   3 當root帳號被外洩

   如果沒有合理管理root帳號導致root帳號被入侵,此時資料庫資訊肯定是沒辦法保證了。但是如果對進程帳戶的權限控制住,以及其對磁碟的權限控制,伺服器還是能夠保證不被淪陷的。

   4 普通帳戶外洩(上述所說的,只對某個庫有所有權限的帳戶)

   此處所說的普通帳戶指網站使用的帳戶,我給的一個比較方便的建議是直接給予特定庫的所有權限。帳號外洩包括存在註入及web伺服器被入侵後直接拿到資料庫帳號密碼。

   此時,對應的這個資料庫資料不保,但不會威脅到其他資料庫。而且這裡的普通帳戶無file權限,所有不能匯出檔案到磁碟,當然此時還是會對進程的帳戶的權限嚴格控制。

   一般帳戶給予什麼樣的權限可以見上表,實在不會就直接給予一個函式庫的所有權限。
七、安全設定所需的常用指令

   1.新建一個使用者並給予對應資料庫的權限
  


 grant select,insert,update,delete,create,drop privileges on database.* to user@localhost identified by 'passwd';


 grant all privileges on database.* to user@localhost identified by 'passwd';

     2.重新整理權限


flush privileges;

   3. 顯示授權


#
show grants;

   4. 移除授權


revoke delete on *.* from 'jack'@'localhost';

   5. 刪除使用者


##

drop user 'jack'@'localhost';

   6. 為使用者改名


#

rename user 'jack'@'%' to 'jim'@'%';

   7. 將使用者密碼密碼


SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

   8. 刪除資料庫


#

drop database test;

   9. 從資料庫匯出檔案


select * from a into outfile "~/abc.sql"

相關建議:

關於mysql權限與安全性詳解

#Mysql權限系統運作原理

MySQL權限管理#

以上是MySQL中的權限詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何處理MySQL中的數據庫升級?您如何處理MySQL中的數據庫升級?Apr 30, 2025 am 12:28 AM

MySQL數據庫升級的步驟包括:1.備份數據庫,2.停止當前MySQL服務,3.安裝新版本MySQL,4.啟動新版本MySQL服務,5.恢復數據庫。升級過程需注意兼容性問題,並可使用高級工具如PerconaToolkit進行測試和優化。

您可以使用MySQL的不同備份策略是什麼?您可以使用MySQL的不同備份策略是什麼?Apr 30, 2025 am 12:28 AM

MySQL備份策略包括邏輯備份、物理備份、增量備份、基於復制的備份和雲備份。 1.邏輯備份使用mysqldump導出數據庫結構和數據,適合小型數據庫和版本遷移。 2.物理備份通過複製數據文件,速度快且全面,但需數據庫一致性。 3.增量備份利用二進制日誌記錄變化,適用於大型數據庫。 4.基於復制的備份通過從服務器備份,減少對生產系統的影響。 5.雲備份如AmazonRDS提供自動化解決方案,但成本和控制需考慮。選擇策略時應考慮數據庫大小、停機容忍度、恢復時間和恢復點目標。

什麼是mySQL聚類?什麼是mySQL聚類?Apr 30, 2025 am 12:28 AM

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

如何優化數據庫架構設計以在MySQL中的性能?如何優化數據庫架構設計以在MySQL中的性能?Apr 30, 2025 am 12:27 AM

在MySQL中優化數據庫模式設計可通過以下步驟提升性能:1.索引優化:在常用查詢列上創建索引,平衡查詢和插入更新的開銷。 2.表結構優化:通過規範化或反規範化減少數據冗餘,提高訪問效率。 3.數據類型選擇:使用合適的數據類型,如INT替代VARCHAR,減少存儲空間。 4.分區和分錶:對於大數據量,使用分區和分錶分散數據,提升查詢和維護效率。

您如何優化MySQL性能?您如何優化MySQL性能?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)

如何使用MySQL的函數進行數據處理和計算如何使用MySQL的函數進行數據處理和計算Apr 29, 2025 pm 04:21 PM

MySQL函數可用於數據處理和計算。 1.基本用法包括字符串處理、日期計算和數學運算。 2.高級用法涉及結合多個函數實現複雜操作。 3.性能優化需避免在WHERE子句中使用函數,並使用GROUPBY和臨時表。

MySQL批量插入數據的高效方法MySQL批量插入數據的高效方法Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显著提升数据库操作效率。

給MySQL表添加和刪除字段的操作步驟給MySQL表添加和刪除字段的操作步驟Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器