MySQL學習筆記(24):許可權與安全

来源:https://www.cnblogs.com/garvenc/archive/2020/07/23/mysql_learning_24_privilege_and_safety.html
-Advertisement-
Play Games

本文更新於2020-05-03,使用MySQL 5.7,操作系統為Deepin 15.4。 許可權 許可權存取需要用到mysql庫中user、db、host、tables_priv、columns_prvi這幾個許可權表。列分為4個部分:用戶列、許可權列、安全列、資源控制列。許可權列又分為普通許可權和管理許可權。 ...


本文更新於2020-05-03,使用MySQL 5.7,操作系統為Deepin 15.4。

目錄

許可權

許可權存取需要用到mysql庫中user、db、host、tables_priv、columns_prvi這幾個許可權表。列分為4個部分:用戶列、許可權列、安全列、資源控制列。許可權列又分為普通許可權和管理許可權。

表名 user db host 說明
用戶列 host host host
用戶列 user db db
用戶列 password user
許可權列 select_priv select_priv select_priv 查詢記錄
許可權列 insert_priv insert_priv insert_priv 插入記錄
許可權列 update_priv insert_priv insert_priv 更新記錄
許可權列 delete_priv delete_priv delete_priv 刪除記錄
許可權列 index_priv index_priv index_priv 維護索引
許可權列 alter_priv alter_priv alter_priv 修改資料庫或表
許可權列 create_priv create_priv create_priv 創建資料庫或表
許可權列 drop_priv drop_priv drop_priv 刪除資料庫或表
許可權列 grant_priv grant_priv grant_priv 授予許可權
許可權列 create_view_priv create_view_priv create_view_priv 創建視圖
許可權列 show_view_priv show_view_priv show_view_priv 展示視圖
許可權列 create_routine_priv create_routine_priv 創建存儲過程或函數
許可權列 alter_routine_priv alter_routine_priv 修改存儲過程或函數
許可權列 references_priv references_priv references_priv ?
許可權列 reload_priv 重新載入MySQL
許可權列 shutdown_priv 關閉MySQL
許可權列 process_priv 查看所有線程
許可權列 file_priv 導出導入文件
許可權列 show_db_priv 展示所有庫
許可權列 super_priv 超級許可權
許可權列 create_tmp_table_priv create_tmp_table_priv create_tmp_table_priv 創建臨時表
許可權列 lock_tables_priv lock_tables_priv lock_tables_priv 鎖表
許可權列 execute_priv 執行存儲過程或函數
許可權列 repl_slave_priv 與複製有關
許可權列 repl_client_priv 與複製有關
安全列 ssl_type
安全列 ssl_cipher
安全列 x509_issuer
安全列 x509_subject
資源控制列 max_questions
資源控制列 max_updates
資源控制列 max_connections
資源控制列 max_user_connections

許可權的存取有以下兩個階段:

  1. 先從user表的host、user和password欄位判斷是否通過身份驗證。
  2. 按照以下許可權表的順序查看是否取得許可權:user->db->tables_priv->columns_priv,如果有許可權表相應的值為Y,則取得該許可權。在這幾個許可權表中,許可權範圍依次遞減,全局許可權覆蓋局部許可權。

安全

操作系統相關的安全問題

  • 嚴格控制操作系統賬號(通常為mysql)和許可權。
  • 儘量避免以root(通常使用mysql)許可權運行MySQL。
  • 防止DNS欺騙:創建賬號時host可指定功能變數名稱,但若功能變數名稱對應的IP地址被惡意修改,則資料庫就會被惡意的IP地址訪問。

資料庫相關的安全問題

  • 刪除匿名賬號。
  • 給root賬號設置密碼。
  • 設置安全密碼。使用密碼有以下幾種方式,也需註意安全問題:直接將密碼寫在命令行中;互動式輸入密碼;將賬號和密碼寫在配置文件中,如寫在/etc/my.cnf的client組中。
  • 只授予賬號必需的許可權。
  • 除root外,任何賬號不應有mysql庫user表的存取許可權。
  • 不要把FILEPROCESSSUPER許可權授予管理員以外的賬號。
  • 註意LOAD DATA LOCAL從客戶端本地讀取文件帶來的安全問題。
  • 使用MERGE存儲引擎潛藏的安全漏洞:通過MERGE表還可以訪問已被回收許可權的子表。
  • DROP TABLE並不回收相關許可權,導致重新創建同名錶時,此前其他用戶對此表的許可權會自動賦予。
  • 使用SSL。
  • 如果可能,給所有用戶加上訪問host限制。
  • REVOKE的漏洞:在一個資料庫上多次賦予許可權,許可權會自動合併;但是在多個資料庫上多次賦予許可權,每個資料庫上都會認為是單獨的一組許可權,必須在此資料庫上用REVOKE單獨進行許可權回收,而REVOKE ALL ON *.*並不會自動完成這個過程。

資料庫安全設置選項

  • --old-passwords:該參數只是為了支持4.1版本前的客戶端,這將使得新建或修改的密碼全部變成舊格式,降低了系統安全性。
  • --safe-user-create:使用戶不能用GRANT創建新賬號,除非用戶有mysql.user表的INSERT許可權。
  • --secure-auth:使4.1版本前的客戶端無法進行用戶認證,即使使用了--old-passwords也不行。
  • --skip-grant-tables:令伺服器不使用許可權系統。
  • --skip-networking:不允許TCP/IP連接,所有連接必須經命名管道(Named Pipes)、共用記憶體(Shared Memory)、UNIX套接字(Socket)文件進行。
  • --skip-show-database:使用該選項,只有賦予SHOW DATABASES許可權的用戶才能執行且顯示所有庫名;不使用該選項,則所有用戶都能執行,但只顯示有許可權的庫名。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Ubuntu上安裝QQ、微信、TIM等軟體一直是一個老大難的問題,網上搜集到的博客也比較零散,本篇博客較詳細地記錄了Wine系列軟體的安裝以及托盤圖標功能的安裝過程,同時記錄了幾種常見的問題 ...
  • 在vmware虛擬機環境下: 實驗環境: 1,CentOS7伺服器,ip地址192.168.118.10/24 2,win7客戶端,ip地址192.168.118.100/24 一,搭建伺服器 1,配置本地yum源 [root@localhost ~]# cd /etc/yum.repos.d [r ...
  • session複製集群的原理就是通過多播通信的方式,把節點的session信息發送給集群其他節點;這種session複製集群有一個缺陷,如果後端tomcat server 一旦增多,那麼對於後端用於發送session信息的網路會非常擁擠,到達一定的量以後,後端網路就可能癱瘓,這樣一來session... ...
  • 安裝自動補齊需要依賴工具 yum install -y bash-completion docker命令補齊: 執行下列命令 sh /usr/share/bash-completion/bash_completion sh /usr/share/bash-completion/completions ...
  • 我對ubuntu的紫色不太喜歡,我比較喜歡黑色;雖然20.04版本換成了黑色,登錄界面也很好看;但是我用的是舊版本ubuntu,所以只能動手改了; grub界面顏色設置: vim /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.grub; 結束後 ...
  • 近期,重新玩了玩kali下的airmon-ng等一套工具“破解”自家wifi密碼。 首先,有關處理2.4Ghz的wifi,在網上講解詳細且含圖文搭配的教程有許多,所以在這裡就不多贅述了。 這裡,主要說明一下處理5Ghz的wifi,在鎖定目標wifi後使用aireplay-ng指令抓取握手包時在確定無 ...
  • 普通的存儲器器件為單埠,也就是數據的輸入輸出只利用一個埠,設計了兩個輸入輸出埠的就是雙埠sram。雖然還具有擴展系列的4埠sram,但雙埠sram已經非常不錯了。雙埠sram經常應用於cpu與其周邊控制器等類似需要直接訪問存儲器或者需要隨機訪問緩衝器之類的器件之間進行通信的情況。從存儲 ...
  • 在Zabbix Server伺服器上安裝oracle-instantclient11.2後,結果使用sqlplus命令時遇到“sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object f... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...