搜尋
首頁資料庫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架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用