《MySQL排錯指南》——1.9 許可問題

本節書摘來自異步社區出版社《MySQL排錯指南》一書中的第1章,第1.9節,作者:【美】Sveta Smirnova(斯維特 斯米爾諾娃),更多章節內容可以訪問云棲社區“異步社區”公眾號查看。

1.9 許可問題

MySQL有復雜的權限方案,這使得你可以精確地設置哪些用戶和主機可以或不可以執行這個或那個操作。從5.5版本開始,MySQL也有了可插拔式的身份驗證模式。

盡管它有很多優勢,但是這個方案很復雜。例如,讓user1@hostA、user2@hostA和user1@hostB不同會很容易混淆它們的權限。當用戶名相同而主機名變化的時候更是如此。

MySQL允許在對象和連接層面設置訪問規則。可以限制某個用戶對于特定的表、列等的訪問權限。

用戶通常會遇到兩類權限問題:

應該有權限連接到服務器的用戶無法連接,或者沒有權限的用戶可以連接;
用戶可以連接到服務器,但是無法使用他們本應該可以訪問的對象,或者可以訪問他們無權訪問的對象。
在解決這些問題之前,應該確認你是否可以連接到服務器。

當你作為解決問題的用戶成功連接到服務器之后(后面的章節將討論無法連接的情況),執行以下查詢:

image

USER()函數會返回當用戶連接到服務器時使用的連接參數。這些參數通常為指定的用戶名和運行客戶端的主機名。CURRENT_USER()函數會返回從權限表中選擇的與訪問權限相關的用戶名和主機名對。mysqld用這些用戶名和主機名對來檢查數據庫對象訪問權限。通過比較這些函數的結果,可以找到mysqld使用的權限和預期不同的原因。一個典型的問題是對主機名使用通配符%:

image

如果此時我以sveta身份連接并嘗試創建一個表,我就會獲得下面的錯誤:

image

該問題在于,MySQL服務器認為sveta是sveta@localhost,而不是通配符:

 image

如果你不理解為什么選擇一臺或另一臺主機,可以進行如下查詢:

image

MySQL在表中按照從訪問最多的主機到訪問最少的主機的順序對行進行排序,然后使用第一個找到的值。因此,它把我當作sveta@localhost用戶進行連接,此時該用戶沒有CREATE權限。

USER()、CURRENT_USER()函數和“SELECT user, host FROM mysql.user ORDER BY host DESE”查詢語句是遇到權限問題時的首選。
另一種權限問題是你無法作為指定用戶進行連接。在這種情況下,通常可以從錯誤消息中了解問題產生的原因,錯誤消息一般如下所示:
image

在看到這條消息以后,你了解了用戶憑證。作為root超級用戶進行連接,然后檢查該用戶是否存在以及是否擁有所需權限:
image

在這個輸出信息中,你可以看到用戶'sveta'@'localhost'僅僅對book數據庫有權限,而對books數據庫沒有權限。現在,可以修復這個錯誤:賦予sveta@localhost用戶必要的權限。

前面的示例討論用戶缺失必要權限的情況。對于用戶被授予過多權限的情況也可以同樣處理;僅需要移除不必要的權限。

警告 警告

MySQL的權限與其管控對象是分離的:這意味著當你賦予某用戶權限時mysqld 不會檢查其是否存在,同時當授權對象被刪除時也不會移除相應權限。這樣做的好處是允許我們預先授予必要的權限,但同時也有可能在不經意的使用中帶來潛在的問題。
作為最佳實踐,我推薦你仔細學習MySQL的權限工作機制。尤其是在你想要在用戶對象級別授予權限的時候,因為你需要理解在一個級別授權是如何影響其他授權的。同樣,對于撤消權限情形也一樣重要,甚至更重要,因為如果你以為已經撤消了某個權限但它依然存在,這就會造成意外的訪問。

[1] 版本5.6.3開始,也可以在UPDATE和DELETE上使用EXPLAIN方法,不過把語句轉換成SELECT查詢仍然有效,因為你可以方便地檢查和操作實際的結果集,而不是僅使用EXPLAIN命令。這尤其適用于復雜的JOIN操作,尤其是當EXPLAIN輸出的檢查的行比實際更新的行還要多的時候。

[2] 你可以在http://dev.mysql.com/doc/refman/5.5/en/c.html找到關于C API的詳細描述。

[3] 第5章將詳細介紹如何解決復制失敗的問題,因此這里不再詳細解釋。

[4] MySQL企業級備份(MEB)以前也稱作InnoDB熱備份,是InnoDB表進行在線熱備份和其他存儲引擎的表進行在線備份的一個工具。第7章將討論備份的方法。

本文僅用于學習和交流目的,不代表異步社區觀點。非商業轉載請注明作譯者、出處,并保留本文的原始鏈接。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456654.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

畢業半年,碼過5個城市

時間飛逝,半年前我還在想我的畢業設計要怎么做,還在擔心自己的答辯能夠拿多少分,而此刻我正在成都寫我喜歡的代碼,過著我想過的生活。畢業半年,碼過5個城市,從廈門->太原-》合肥-》北京-》成都。2016是我…

python ---單例(Singleton)

單例(Singleton) 單例是一種 設計模式 ,應用該模式的類只會生成一個實例。 單例模式保證了在程序的不同位置都 可以且僅可以取到同一個對象實例 :如果實例不存在,會創建一個實例;如果已存在就會返回這個實例…

Oracle-11g-R2 RAC 環境下 GPnP Profile 文件

GPnP Profile 文件的作用&#xff1a; GPnP Profile 文件是一個保存于$GRID_HOME/gpnp/<hostname>/profiles/peer目錄下的小型 XML 文件&#xff0c;名稱為 profile.xml。其用于正確描述 RAC 每個節點的全局特性。每個節點上都會保存一個本地的 GPnP Profile&#xff0c;…

《Pro/ENGINEER野火版5.0從入門到精通》——2.5 設置零件單位

本節書摘來自異步社區《Pro/ENGINEER野火版5.0從入門到精通》一書中的第2章&#xff0c;第2.5節&#xff0c;作者 暴風創新科技&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.5 設置零件單位 由于不同國家單位制的不相同&#xff0c;在企業間合作或溝通…

元類被稱為 Python 中的“深奧的巫術“

元類被稱為 Python 中的“深奧的巫術”。盡管你需要用到它的地方極少&#xff08;除非你基于 zope 編程&#xff09;&#xff0c;可事實上它的基礎理論其實令人驚訝地易懂。 一切皆對象 一切都有類型 “class”和“type”之間本質上并無不同 類也是對象 它們的類型是 type 以…

機器學習之必知開源數據集

之前看到的不錯的文章&#xff0c;玩機器學習數據是關鍵&#xff0c;有了這些東西&#xff0c;你就不必再為沒有數據而苦惱。 轉自&#xff1a;https://www.toutiao.com/i6432197108580745730/ 目錄UCIGoogleTrendsKaggleAWS公用數據集ImagenetMINIST/r/數據集其他數據集 目錄…

PHP中header函數的用法及其注意重點是什么呢

1、使用header函數進行跳轉頁面&#xff1b; header(Location:.$url);  其中$url就是將要跳轉的url了。 這種用法的注意事項有以下幾點&#xff1a; ?Location和":"之間不能有空格&#xff0c;否則會出現錯誤&#xff08;注釋&#xff1a;我剛測試了&#xff0c;在…

《計算機科學概論》—第3章3.3節文本表示法

本節書摘來自華章出版社《計算機科學概論》一書中的第3章&#xff0c;第3.3節文本表示法&#xff0c;作者&#xff3b;美]內爾黛爾&#xff08;Nell Dale&#xff09;約翰路易斯&#xff08;John Lewis&#xff09;&#xff0c;更多章節內容可以訪問云棲社區“華章計算機”公眾…

習題

# -*- coding: utf-8 -*- # Time : 2019/08/08 17:38 # Author : Liu # File : zuoye.py# 一、 # 將此功能定義成一個函數&#xff0c; # 電腦隨機生成1~100隨機數&#xff0c;用戶輸入一個數字&#xff0c;電腦提示用戶大或者小&#xff0c;猜錯&#xff0c;繼續提示&a…

經典技術面試指南

目錄計算機基礎知識數據結構算法操作系統計算機網絡數據庫海量數據處理C語言基礎Java基礎Java高級Java Web設計模式知識的綜合能力工具使用項目相關技術熱情表達能力思考方式其他推薦閱讀 目錄 最近看到一份不錯的面試總結&#xff0c;也是每位程序猿都應該掌握的基礎&#x…

Linux 共享內存詳解一

共享內存段被多個進程附加的時候&#xff0c;如果不是所有進程都已經調用shmdt&#xff0c;那么刪除該共享內存段時&#xff0c;會出現一個臨時的不完整的共享內存段&#xff08;key值是0&#xff09;&#xff0c;無法徹底刪除。只有當所有進程都調用shmdt&#xff0c;這個臨時…

python 魔術方法

python 魔術方法 常用魔術方法 魔術方法就是一個類的特殊方法&#xff0c;和普通方法唯一的不同時&#xff0c;普通方法需要調用&#xff01;而魔術方法由系統自動調用。 1.__init__ 初始化魔術方法 觸發時機&#xff1a;初始化對象時觸發&#xff08;不是實例化觸發&#xf…

Storm ack和fail機制再論

之前對這個的理解有些問題&#xff0c;今天用到有仔細梳理了一遍&#xff0c;記錄一下 首先開啟storm tracker機制的前提是&#xff0c; 1. 在spout emit tuple的時候&#xff0c;要加上第3個參數messageid 2. 在配置中acker數目至少為1 3. 在bolt emit的時候&#xff0c;要加…

Storm編程模型總結

目錄前言&#xff1a;1、Storm編程模型2、對應的的WordCount案例總結&#xff1a; 目錄 前言&#xff1a; 對于Storm的編程模型有必要做一個詳細的介紹&#xff08;配合WC案例來介紹&#xff09; 1、Storm編程模型 上圖中組件的解釋&#xff1a; DataSource&#xff1a;外…

13_觀察者模式

【觀察者模式】 也叫作發布/訂閱模式&#xff0c;使用較為頻繁。 定義了對象間一種一對多的依賴關系&#xff0c;當一個對象改變狀態時&#xff0c;則所有依賴于它的對象都會得到通知并被自動更新。 觀察者模式由以下幾個角色組成&#xff1a; * Subject 被觀察者 定義被觀察者…

【python】內建異常類的層次

內建異常類的層次 BaseException-- SystemExit-- KeyboardInterrupt-- GeneratorExit-- Exception-- StopIteration-- StopAsyncIteration-- ArithmeticError| -- FloatingPointError| -- OverflowError| -- ZeroDivisionError-- AssertionError-- AttributeError-- …

《黑客秘笈——滲透測試實用指南》—第2章2.3節 外部或內部的主動式信息收集...

本節書摘來自異步社區《黑客秘笈——滲透測試實用指南》一書中的第2章2.3節 外部或內部的主動式信息收集&#xff0c;作者【美】Peter Kim&#xff08;彼得 基姆&#xff09;,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.3 外部或內部的主動式信息收集黑客秘笈——…

Storm集群的安裝及簡單使用

目錄前言&#xff1a;1、集群部署的基本流程2、Storm常用操作命令&#xff08;了解&#xff09;3、Storm集群的進程及日志熟悉&#xff08;知道對應的日志的位置出了問題知道去哪找原因&#xff09;4、Storm源碼目錄分析&#xff08;重要&#xff09;總結&#xff1a; 目錄 前…

【python】錯誤、異常和文件---復習筆記

錯誤、異常和文件 1. 異常處理 錯誤指的是代碼有語法問題&#xff0c;無法解釋運行&#xff0c;必須改正后才能運行 如果代碼沒有語法問題&#xff0c;可以運行&#xff0c;但會出運行時的錯誤&#xff0c;例如除零錯誤&#xff0c;下標越界等問題&#xff0c;這種在運行期間…

關于使用百度ueditor時的一些問題

本來這些問題直接在百度貼吧里回答不就完事了,可是好死不死的,百度貼吧里老出現 未知錯誤&#xff0c;錯誤號&#xff1a;230274 看來還是算了,自己做一個隨筆記錄一下好了 關于我們獲取里面的內容時,老是會有一個<p>來包著,而且還老是多出來一個<br/> 這邊是這么處…