首頁 資料庫 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

熱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

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQL的角色:Web應用程序中的數據庫 MySQL的角色:Web應用程序中的數據庫 Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

解決數據庫連接問題:使用minii/db庫的實際案例 解決數據庫連接問題:使用minii/db庫的實際案例 Apr 18, 2025 am 07:09 AM

在開發一個小型應用時,我遇到了一個棘手的問題:需要快速集成一個輕量級的數據庫操作庫。嘗試了多個庫後,我發現它們要么功能過多,要么兼容性不佳。最終,我找到了minii/db,這是一個基於Yii2的簡化版本,完美地解決了我的問題。

centos7如何安裝mysql centos7如何安裝mysql Apr 14, 2025 pm 08:30 PM

優雅安裝 MySQL 的關鍵在於添加 MySQL 官方倉庫。具體步驟如下:下載 MySQL 官方 GPG 密鑰,防止釣魚攻擊。添加 MySQL 倉庫文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 倉庫緩存:yum update安裝 MySQL:yum install mysql-server啟動 MySQL 服務:systemctl start mysqld設置開機自啟動

centos安裝mysql centos安裝mysql Apr 14, 2025 pm 08:09 PM

在 CentOS 上安裝 MySQL 涉及以下步驟:添加合適的 MySQL yum 源。執行 yum install mysql-server 命令以安裝 MySQL 服務器。使用 mysql_secure_installation 命令進行安全設置,例如設置 root 用戶密碼。根據需要自定義 MySQL 配置文件。調整 MySQL 參數和優化數據庫以提升性能。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

MySQL與其他編程語言:一種比較 MySQL與其他編程語言:一種比較 Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

See all articles