<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQLStudy之--MySQL普通用戶無法本地登陸_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 19:53:24
        文檔

        MySQLStudy之--MySQL普通用戶無法本地登陸_MySQL

        MySQLStudy之--MySQL普通用戶無法本地登陸_MySQL:MySQL Study之--MySQL普通用戶無法本地登陸 在安裝完成MySQL后,我們通常添加擁有相應權限的普通用戶用來訪問數據庫。在使用用戶本地登錄數據庫的時候,經常會出現怎么登錄也無法登錄的情況,但是從其它的mysql客戶端卻可以登錄。 故障現象: [root@
        推薦度:
        導讀MySQLStudy之--MySQL普通用戶無法本地登陸_MySQL:MySQL Study之--MySQL普通用戶無法本地登陸 在安裝完成MySQL后,我們通常添加擁有相應權限的普通用戶用來訪問數據庫。在使用用戶本地登錄數據庫的時候,經常會出現怎么登錄也無法登錄的情況,但是從其它的mysql客戶端卻可以登錄。 故障現象: [root@
        MySQL Study之--MySQL普通用戶無法本地登陸
        在安裝完成MySQL后,我們通常添加擁有相應權限的普通用戶用來訪問數據庫。在使用用戶本地登錄數據庫的時候,經常會出現怎么登錄也無法登錄的情況,但是從其它的mysql客戶端卻可以登錄。

        故障現象:
        [root@mysrv ~]# mysql -u root -poracle
        Welcome to the MySQL monitor. Commands end with ; or \g.
        Your MySQL connection id is 10
        Server version: 5.6.25-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)
        Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.
        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

        mysql> select version()\g
        +-------------------------------------------+
        | version() |
        +-------------------------------------------+
        | 5.6.25-enterprise-commercial-advanced-log |
        +-------------------------------------------+
        1 row in set (0.00 sec)

        創建用戶并授權:
        mysql> grant all on prod.* to 'rose'@'%' identified by 'rose';
        Query OK, 0 rows affected (0.01 sec)

        mysql> show grants for rose;
        +-----------------------------------------------------------------------------------------------------+
        | Grants for rose@% |
        +-----------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'rose'@'%' IDENTIFIED BY PASSWORD '*86F57026C60B8CE1038EFB3B9383EC573979A7BD' |
        | GRANT ALL PRIVILEGES ON `prod`.* TO 'rose'@'%' |
        +-----------------------------------------------------------------------------------------------------+
        2 rows in set (0.00 sec)

        mysql> select user,host from user;
        +-------+-----------+
        | user | host |
        +-------+-----------+
        | jerry | % |
        | rose | % |
        | tom | % |
        | tom1 | % |
        | tom2 | % |
        | root | 127.0.0.1 |
        | root | ::1 |
        | | localhost |
        | jerry | localhost |
        | root | localhost |
        | scott | localhost |
        | tom | localhost |
        | | mysrv |
        | root | mysrv |
        +-------+-----------+
        14 rows in set (0.00 sec)
        

        用戶登陸:
        [root@mysrv ~]# mysql -u rose -prose
        ERROR 1045 (28000): Access denied for user 'rose'@'localhost' (using password: YES) ---登陸失敗!
        [root@mysrv ~]# mysql -u rose -p
        Enter password:
        Welcome to the MySQL monitor. Commands end with ; or \g.
        Your MySQL connection id is 22
        Server version: 5.6.25-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)
        Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.
        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use prod;
        ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'prod'--

        ---在不用密碼的情況下可以登陸,但沒有權限訪問,應該是匿名用戶的身份 !
        遠程登陸: \

        ---遠程登陸成功!
        一、登錄后查看mysql.user表的情況

        可以看到,我的數據庫中有rose用戶和匿名用戶localhost;
        mysql> show grants for rose;
        +-----------------------------------------------------------------------------------------------------+
        | Grants for rose@% |
        +-----------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'rose'@'%' IDENTIFIED BY PASSWORD '*86F57026C60B8CE1038EFB3B9383EC573979A7BD' |
        | GRANT ALL PRIVILEGES ON `prod`.* TO 'rose'@'%' |
        +-----------------------------------------------------------------------------------------------------+
        2 rows in set (0.00 sec)

        二、在本機用rose用戶登錄,發現不用密碼可以登錄;
        [root@mysql01 ~]# mysql -urose -p
        Enter password:

        mysql> select user(),current_user();
        +----------------+----------------+
        | user() | current_user() |
        +----------------+----------------+
        | rose@localhost | @localhost |
        +----------------+----------------+
        1 row in set (0.00 sec)

        登錄成功了,使用USER()和CURRENT_USER()兩個函數查看所使用的用戶。
        USER()函數返回你在客戶端登陸時指定的用戶名和主機名。
        CURRENT_USER()函數返回的是MySQL使用授權表中的哪個用戶來認證你的登錄請求。
        這里發現,我使用'rose'@'localhost'這個賬戶登錄數據庫(因為在本地登陸時沒指定主機,默認是以localhost登錄),但是數據庫使用的是''@'localhost'這個賬戶來進行登錄認證,而''@'localhost'這個匿名用戶是沒有密碼的,因此我輸入空密碼登錄成功了。但是登錄后,所對應的用戶的匿名用戶。

        一般在MySQL在安裝完畢后,我們使用mysql_install_db這個腳本生成授權表,會默認創建''@'localhost'這個匿名用戶。正是因為這個匿名用戶,影響了其他用戶從本地登錄的認證。
        那么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字段都有多個匹配值,主機名最精確匹配的條目被用戶對用戶進行認證。

        了解了這個認證流程,就知道為什么server登錄失敗了。
        使用GaMe在本機登錄數據時,不指定-h參數默認為localhost主機登錄,而在MySQL中有兩個匹配的條目:'rose'@'%' 和 ''@'localhost'
        匿名用戶能夠匹配的原因上面說過,空字符串可以匹配所有的用戶名,就像通配符一樣。
        根據MySQL認證時的排序規則,第一個條目的用戶名排序更前,第二個條目的主機名更精確,排序更前。
        而MySQL會優先使用主機名排序第一的條目進行身份認證,因此''@'localhost'被用戶對客戶端進行認證。因此,只有使用匿名用戶的空密碼才能登錄進數據庫。就會出現下面的情況了。
        解決的方法:刪除匿名用戶(僅僅為了安全也有這個必要)
        為什么root用戶不會受影響,而只有普通用戶不能從本地登錄?
        因為mysql_install_db腳本會在授權表中生成'root'@'localhost'這個賬戶。同樣的,使用root登錄MySQL 時,'root'@'localhost'和''@'localhost'都能匹配登錄的賬戶,但是根據排序規則,主機名相同,而用戶名非空字符串優先,因此'root'@'localhost'這個條目的排序更靠前。使用root本地登錄是不會被匿名用戶遮蓋。
        解決方法:
        授權rose用戶本地登陸: mysql> grant all on prod.* to 'rose'@'localhost' identified by 'rose';
        Query OK, 0 rows affected (0.01 sec)
        從本地登陸: [root@mysrv ~]# mysql -u rose -prose
        Welcome to the MySQL monitor. Commands end with ; or \g.
        Your MySQL connection id is 26
        Server version: 5.6.25-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)
        Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.
        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
        mysql> use prod;
        Database changed
        mysql> show tables;
        +----------------+
        | Tables_in_prod |
        +----------------+
        | t1 |
        +----------------+
        1 row in set (0.00 sec)

        mysql> select * from t1;
        +------+-------+
        | id | name |
        +------+-------+
        | 10 | tom |
        | 20 | jerry |
        | 30 | rose |
        +------+-------+
        3 rows in set (0.00 sec)

        ---登陸成功!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQLStudy之--MySQL普通用戶無法本地登陸_MySQL

        MySQLStudy之--MySQL普通用戶無法本地登陸_MySQL:MySQL Study之--MySQL普通用戶無法本地登陸 在安裝完成MySQL后,我們通常添加擁有相應權限的普通用戶用來訪問數據庫。在使用用戶本地登錄數據庫的時候,經常會出現怎么登錄也無法登錄的情況,但是從其它的mysql客戶端卻可以登錄。 故障現象: [root@
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费国产a国产片高清网站| 在线观看日本免费a∨视频| 日韩伦理片电影在线免费观看| 一个人免费观看日本www视频| 亚洲AV无码精品国产成人| 5555在线播放免费播放| 亚洲美女中文字幕| 午夜精品一区二区三区免费视频| 99久久99热精品免费观看国产| 无码人妻久久一区二区三区免费丨| 色www永久免费视频| 亚洲一线产区二线产区精华| 在线成人爽a毛片免费软件| 亚洲丁香色婷婷综合欲色啪| 蜜桃视频在线观看免费视频网站WWW| 国内免费高清在线观看| 亚洲三级高清免费| 日本zzzzwww大片免费| 亚洲不卡视频在线观看| 成全视频免费高清| 亚洲国产区男人本色| 国产99视频免费精品是看6| 一级特级aaaa毛片免费观看| 亚洲国产另类久久久精品小说| 亚洲精品天堂成人片AV在线播放 | 蜜臀98精品国产免费观看| 亚洲综合在线观看视频| 最新中文字幕免费视频| 亚洲av中文无码乱人伦在线观看| 无码av免费网站| 亚洲xxxxxx| 免费无码看av的网站| 国产精品永久免费| 亚洲日韩图片专区第1页| 免费黄色网址入口| 精品国产免费人成网站| 91天堂素人精品系列全集亚洲 | 在线免费播放一级毛片| 亚洲福利一区二区| 免费萌白酱国产一区二区| 国产精品高清免费网站|