97国产永久网址在线观看_日韩成人一区二区三区在线观看_高清无码一区二区三区在线_日本强在线播放一区

之前一個客戶的項目,使用root用戶連接的MySQL數據,為了提高安全性,準備降權為普通用戶連接。

使用grant語句建立了用戶,主機限制使用的%,也就是不限制主機。(因為沒有開啟MySQL端口,所以localhost也意義不大)。FLUSH PRIVILEGES也是執行了的。

但是登錄的提示就一直登錄不上,如下圖。

MySQL 普通用戶無法登陸的解決方案

以為密碼輸錯了,還使用 set password for 重置了MySQL用戶密碼,依舊無法登陸。懷疑人生的我去看了用戶表,用戶也是存在的,主機也確實沒限制,如下圖。

MySQL 普通用戶無法登陸的解決方案

于是查詢解決方案,查出了以下知識點。

MySQL的簡要認證算法如下:

當用戶從客戶端請求登陸時,MySQL將授權表中的條目與客戶端所提供的條目進行比較,包括用戶的用戶名,密碼和主機。

授權表中的Host字段是可以使用通配符作為模式進行匹配的,如test.example.com, %.example.com, %.com和%都可以匹配test.example.com這個主機。

授權表中的User字段不允許使用模式匹配,但是可以有一個空字符的用戶名代表匿名用戶,并且空字符串可以匹配所有的用戶名,就像通配符一樣。

當user表中的Host和User有多個值可以匹配客戶端提供的主機和用戶名時,MySQL將user表讀入內存,并且按照一定規則排序,按照排序規則讀取到的第一個匹配客戶端用戶名和主機名的條目對客戶端進行身份驗證。

排序規則:
對于Host字段,按照匹配的精確程度進行排序,越精確的排序越前,例如當匹配test.example.com這個主機時, %.example.com比%.com更精確,而test.example.com比%.example.com更精確。
對于User字段,非空的字符串用戶名比空字符串匹配的用戶名排序更靠前。
User和Host字段都有多個匹配值,MySQL使用主機名排序最前的條目,在主機名字段相同時再選取用戶名排序更前的條目。
因此,如果User和Host字段都有多個匹配值,主機名最精確匹配的條目被用戶對用戶進行認證。

引用自cnblogs

這樣一來,問題解決方案就出來了。解決方案:刪除庫中存在的匿名用戶

經過查詢,確實存在匿名用戶,如下圖,刪除后即可成功登錄。

MySQL 普通用戶無法登陸的解決方案

相關文章

發表回復

您的郵箱地址不會被公開。 必填項已用 * 標注

聯系電話

176-8951-1878

微信
微信
分享本頁
返回頂部
西藏巨騰信息技術有限公司提供拉薩網站建設、軟件開發、小程序開發、APP開發、網絡營銷、在線推廣、在線商城開發等服務,聯系電話: 17689511878
主站蜘蛛池模板: 大丰市| 黑河市| 疏勒县| 岑溪市| 乐东| 信阳市| 潮安县| 罗定市| 南岸区| 南召县| 阳东县| 华坪县| 海伦市| 察隅县| 霞浦县| 濮阳县| 文登市| 上虞市| 惠安县| 炉霍县| 肃北| 蓝田县| 黔江区| 红河县| 斗六市| 沧州市| 河西区| 揭西县| 辽源市| 株洲县| 河北省| 万州区| 安多县| 皮山县| 许昌县| 乐亭县| 兴国县| 崇明县| 洪江市| 康平县| 宣汉县|