mysql SKIP-NAME-RESOLVE 錯誤的使用時機造成用戶權(quán)限
更新時間:2011年06月19日 12:16:51 作者:
新加的一臺服務(wù)器,連接內(nèi)網(wǎng)中的一臺mysql服務(wù)器的時候,經(jīng)常出現(xiàn)超時。
登陸到mysql,查看進程的信息
show processlist;
發(fā)現(xiàn)大量的進程的狀態(tài)為 login
原來默認的時候mysql啟動時是不使用 skip-name-resolve選項的,這樣的話,從其它主機的連接會比較慢,因為mysql會對這個ip做dns反向查詢,導(dǎo)致大量的連接處于 login狀態(tài)....
.
解決這個問題有兩個辦法
一是加入 skip-name-resolve參數(shù)重啟mysql
二是在 /etc/hosts中加入一句 192.168.0.2 server2 其中 192.168.0.2是新加的服務(wù)器的內(nèi)網(wǎng)ip,server2是新服務(wù)器的主機名
在mysql客戶端登陸mysql服務(wù)器的登錄速度太慢的解決方案一篇文章中,我介紹了如何通過在my.ini文件(linux下是my.cnf文件)中添加"SKIP-NAME-RESOLVE"的參數(shù)設(shè)置,使得客戶端在登錄服務(wù)器的時候不通過主機解析這一關(guān),直接登陸的方法,以此來提高登錄速度。
這里要介紹一下這種方法的負面作用,以及不合理的時機使用這種方法會引發(fā)的不可發(fā)現(xiàn)的錯誤。
首先,回顧一下在my.ini文件中添加"SKIP-NAME-RESOLVE"參數(shù)來提高訪問速度的原理:
在沒有設(shè)置該參數(shù)的時候,客戶端在登陸請求發(fā)出后,服務(wù)器要解析請求者是誰,經(jīng)過解析,發(fā)現(xiàn)登錄者是從另外的電腦登錄的,也就是說不是服務(wù)器本機,那么,服務(wù)器會到mysql.user表中去查找是否有這個用戶,假設(shè)服務(wù)器IP是192.168.0.1,而客戶機的IP是192.168.0.2;那么查詢的順序是先找'root'@'192.168.0.2'這個user是否存在,若存在,則匹配這個用戶登陸,并加載權(quán)限列表。若沒有該用戶,則查找'root'@'%'這個用戶是否存在,若存在,則加載權(quán)限列表。否則,登錄失敗。
在設(shè)置了SKIP-NAME-RESOLVE參數(shù)后,客戶端的登錄請求的解析式同上面一樣的,但是在服務(wù)器本機的解析過程卻發(fā)生了改變:服務(wù)器會把在本機登錄的用戶自動解析為'root'@'127.0.0.1';而不是'root'@'localhost';這樣一來就壞了,因為我們在服務(wù)器上登錄是為了進行一些維護操作,但是顯然,'root'@'127.0.0.1'這個用戶是被默認為'root'@'%'這個用戶的,這個用戶還沒有足夠得權(quán)限去執(zhí)行一些超級管理員'root'@'localhost'才能執(zhí)行的大作。因為未分配權(quán)限。
所以結(jié)論是:加入你在服務(wù)器本機上登錄mysql服務(wù)器的話,要么先取消SKIP-NAME-RESOLVE的參數(shù)設(shè)置,重新啟動服務(wù)器再登陸,設(shè)置完成后,再設(shè)置上該參數(shù);要么就給'root'@'127.0.0.1'分配超級管理員權(quán)限,但這么做顯然是不明智的,因為任何人在任何機器上都可以用這個用戶執(zhí)行管理員操作,前提是知道了密碼。
我有一次在mysql服務(wù)器上執(zhí)行數(shù)據(jù)庫創(chuàng)建腳本,并同時創(chuàng)建表、觸發(fā)器、存儲過程等。結(jié)果,總是失敗,經(jīng)過了一上午的折騰,最后發(fā)現(xiàn)時這個參數(shù)造成我以'root'@'127.0.0.1'這個用戶登陸了服務(wù)器,這個用戶沒有創(chuàng)建觸發(fā)器的權(quán)限。后來,取消了SKIP-NAME-RESOLVE參數(shù)后,執(zhí)行成功,再把該參數(shù)設(shè)置回去。重啟。OK。
所以,在設(shè)置這個參數(shù)的時候一定要注意時機:先用超級管理員將所有的用戶創(chuàng)建好,再將權(quán)限分配好之后,才設(shè)置這個參數(shù)生效。
復(fù)制代碼 代碼如下:
show processlist;
發(fā)現(xiàn)大量的進程的狀態(tài)為 login
原來默認的時候mysql啟動時是不使用 skip-name-resolve選項的,這樣的話,從其它主機的連接會比較慢,因為mysql會對這個ip做dns反向查詢,導(dǎo)致大量的連接處于 login狀態(tài)....
.
解決這個問題有兩個辦法
一是加入 skip-name-resolve參數(shù)重啟mysql
二是在 /etc/hosts中加入一句 192.168.0.2 server2 其中 192.168.0.2是新加的服務(wù)器的內(nèi)網(wǎng)ip,server2是新服務(wù)器的主機名
在mysql客戶端登陸mysql服務(wù)器的登錄速度太慢的解決方案一篇文章中,我介紹了如何通過在my.ini文件(linux下是my.cnf文件)中添加"SKIP-NAME-RESOLVE"的參數(shù)設(shè)置,使得客戶端在登錄服務(wù)器的時候不通過主機解析這一關(guān),直接登陸的方法,以此來提高登錄速度。
這里要介紹一下這種方法的負面作用,以及不合理的時機使用這種方法會引發(fā)的不可發(fā)現(xiàn)的錯誤。
首先,回顧一下在my.ini文件中添加"SKIP-NAME-RESOLVE"參數(shù)來提高訪問速度的原理:
在沒有設(shè)置該參數(shù)的時候,客戶端在登陸請求發(fā)出后,服務(wù)器要解析請求者是誰,經(jīng)過解析,發(fā)現(xiàn)登錄者是從另外的電腦登錄的,也就是說不是服務(wù)器本機,那么,服務(wù)器會到mysql.user表中去查找是否有這個用戶,假設(shè)服務(wù)器IP是192.168.0.1,而客戶機的IP是192.168.0.2;那么查詢的順序是先找'root'@'192.168.0.2'這個user是否存在,若存在,則匹配這個用戶登陸,并加載權(quán)限列表。若沒有該用戶,則查找'root'@'%'這個用戶是否存在,若存在,則加載權(quán)限列表。否則,登錄失敗。
在設(shè)置了SKIP-NAME-RESOLVE參數(shù)后,客戶端的登錄請求的解析式同上面一樣的,但是在服務(wù)器本機的解析過程卻發(fā)生了改變:服務(wù)器會把在本機登錄的用戶自動解析為'root'@'127.0.0.1';而不是'root'@'localhost';這樣一來就壞了,因為我們在服務(wù)器上登錄是為了進行一些維護操作,但是顯然,'root'@'127.0.0.1'這個用戶是被默認為'root'@'%'這個用戶的,這個用戶還沒有足夠得權(quán)限去執(zhí)行一些超級管理員'root'@'localhost'才能執(zhí)行的大作。因為未分配權(quán)限。
所以結(jié)論是:加入你在服務(wù)器本機上登錄mysql服務(wù)器的話,要么先取消SKIP-NAME-RESOLVE的參數(shù)設(shè)置,重新啟動服務(wù)器再登陸,設(shè)置完成后,再設(shè)置上該參數(shù);要么就給'root'@'127.0.0.1'分配超級管理員權(quán)限,但這么做顯然是不明智的,因為任何人在任何機器上都可以用這個用戶執(zhí)行管理員操作,前提是知道了密碼。
我有一次在mysql服務(wù)器上執(zhí)行數(shù)據(jù)庫創(chuàng)建腳本,并同時創(chuàng)建表、觸發(fā)器、存儲過程等。結(jié)果,總是失敗,經(jīng)過了一上午的折騰,最后發(fā)現(xiàn)時這個參數(shù)造成我以'root'@'127.0.0.1'這個用戶登陸了服務(wù)器,這個用戶沒有創(chuàng)建觸發(fā)器的權(quán)限。后來,取消了SKIP-NAME-RESOLVE參數(shù)后,執(zhí)行成功,再把該參數(shù)設(shè)置回去。重啟。OK。
所以,在設(shè)置這個參數(shù)的時候一定要注意時機:先用超級管理員將所有的用戶創(chuàng)建好,再將權(quán)限分配好之后,才設(shè)置這個參數(shù)生效。
您可能感興趣的文章:
- MySQL創(chuàng)建用戶與授權(quán)及撤銷用戶權(quán)限方法
- MySQL用戶權(quán)限管理詳解
- Windows下降權(quán)MYSQL和apche的運行級別(普通用戶權(quán)限運行)
- MySQL中導(dǎo)出用戶權(quán)限設(shè)置的腳本分享
- MySQL驗證用戶權(quán)限的方法
- 在MySQL中增添新用戶權(quán)限的方法
- MySQL數(shù)據(jù)庫下用戶及用戶權(quán)限配置
- MySQL與Oracle 差異比較之七用戶權(quán)限
- MySQL 創(chuàng)建用戶、授權(quán)用戶、撤銷用戶權(quán)限、更改用戶密碼、刪除用戶(實用技巧)
- MySQL用戶權(quán)限驗證與管理方法詳解
相關(guān)文章
Mysql+Navicat16長期免費直連數(shù)據(jù)庫安裝使用超詳細教程
這篇文章主要介紹了Mysql+Navicat16長期免費直連數(shù)據(jù)庫安裝教程,這里下載的是mysql8版本,第一個安裝包比較小, 第二個安裝包比較大, 因為包含調(diào)試工具,我這里下載的是第一個,詳細介紹跟隨小編一起看看吧2023-11-11Windows服務(wù)器下MySql數(shù)據(jù)庫單向主從備份詳細實現(xiàn)步驟分享
將主服務(wù)器中的MySql數(shù)據(jù)庫同步到從服務(wù)器中,使得對主服務(wù)器的操作可以即時更新到從服務(wù)器,避免主服務(wù)器因環(huán)境或者網(wǎng)絡(luò)異常一時無法使用,達到備份效果,這篇文章整理的確實挺詳細的2012-05-05MySQL不使用order by實現(xiàn)排名的三種思路總結(jié)
ORDER BY語句用于根據(jù)指定的列對結(jié)果集進行排序,在日常開發(fā)中也經(jīng)常會用到,但下面這篇文章主要給大家介紹了關(guān)于MySQL不使用order by實現(xiàn)排名的三種思路,需要的朋友可以參考下2021-06-06解決Navicat Premium 連接 MySQL 8.0 報錯"1251"的問題分析
這篇文章主要介紹了解決Navicat Premium 連接 MySQL 8.0 報錯"1251"的問題分析,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11MySQL數(shù)據(jù)庫MyISAM存儲引擎轉(zhuǎn)為Innodb的方法
mysql數(shù)據(jù)庫存儲引擎為MyISAM的時候,在大訪問量的情況下數(shù)據(jù)表有可能會出現(xiàn)被鎖的情況,這就會導(dǎo)致用戶連接網(wǎng)站時超時而返回502,此時就需要MySQL數(shù)據(jù)庫MyISAM存儲引擎轉(zhuǎn)為Innodb,這篇文章主要介紹了MySQL數(shù)據(jù)庫MyISAM存儲引擎轉(zhuǎn)為Innodb的方法,需要的朋友可以參考下2014-06-06在Linux系統(tǒng)的命令行中為MySQL創(chuàng)建用戶的方法
這篇文章主要介紹了在Linux系統(tǒng)的命令行中為MySQL創(chuàng)建用戶的方法,包括對所建用戶的權(quán)限管理,需要的朋友可以參考下2015-06-06