日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql以user1登录_在mysql中创建用户后不能本地登录的解决方法

發(fā)布時(shí)間:2025/3/11 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql以user1登录_在mysql中创建用户后不能本地登录的解决方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在安裝完成MySQL后,我們通常添加擁有相應(yīng)權(quán)限的普通用戶用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。在使用用戶本地登錄數(shù)據(jù)庫(kù)的時(shí)候,經(jīng)常會(huì)出現(xiàn)怎么登錄也無(wú)法登錄的情況,但是從其他的mysql客戶端卻可以登錄。

[root@mysql01 ~]# mysql -userver -p123456

ERROR 1045 (28000): Access denied for user 'server'@'localhost'

(using password: YES)

本地登錄失敗;

[root@mysql02 ~]# mysql -h192.168.47.166 -userver -p123456

Welcome to the MySQL monitor.?Commands end with ;

or \g.

Your MySQL connection id is 7

Server version: 5.5.36-log Source distribution

遠(yuǎn)程登錄成功;

一、登錄后查看mysql.user表的情況

image

可以看到,我的數(shù)據(jù)庫(kù)中有server用戶和匿名用戶localhost;

?server用戶的密碼是'server'

?匿名用戶的密碼為空

二、在本機(jī)用server用戶登錄,發(fā)現(xiàn)不用密碼可以登錄;

[root@mysql01 ~]# mysql -userver -p

Enter password:

Welcome to the MySQL monitor.?Commands end with ;

or \g.

Your MySQL connection id is 3

Server version: 5.5.36-log Source distribution

Copyright (c) 2000, 2014, 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 USER(), CURRENT_USER();

+--------------------------+-----------------------+

| USER()?| CURRENT_USER() |

+-------------------------+------------------------+

| server@localhost?|

@localhost?|

+-------------------------+-------------------------+

1 row in set (0.00 sec)

登錄成功了,使用USER()和CURRENT_USER()兩個(gè)函數(shù)查看所使用的用戶。

?USER()函數(shù)返回你在客戶端登陸時(shí)指定的用戶名和主機(jī)名。

?CURRENT_USER()函數(shù)返回的是MySQL使用授權(quán)表中的哪個(gè)用戶來(lái)認(rèn)證你的登錄請(qǐng)求。

這里發(fā)現(xiàn),我使用'server'@'localhost'這個(gè)賬戶登錄數(shù)據(jù)庫(kù)(因?yàn)樵诒镜氐顷憰r(shí)沒(méi)指定主機(jī),默認(rèn)是以localhost登錄),

但是數(shù)據(jù)庫(kù)使用的是''@'localhost'這個(gè)賬戶來(lái)進(jìn)行登錄認(rèn)證,而''@'localhost'這個(gè)匿名用戶是沒(méi)有密碼的,因此我輸入空密碼登

錄成功了。但是登錄后,所對(duì)應(yīng)的用戶的匿名用戶。

一般在MySQL在安裝完畢后,我們使用mysql_install_db這個(gè)腳本生成授權(quán)表,會(huì)默認(rèn)創(chuàng)建''@'localhost'這個(gè)匿名用戶。正是因?yàn)檫@個(gè)匿名用戶,影響了其他用戶從本地登錄的認(rèn)證。

那么MySQL是如何進(jìn)行用戶身份認(rèn)證呢?

一、當(dāng)用戶從客戶端請(qǐng)求登陸時(shí),MySQL將授權(quán)表中的條目與客戶端所提供的條目進(jìn)行比較,包括用戶的用戶名,密碼和主機(jī)。授權(quán)表中的Host字段

是可以使用通配符作為模式進(jìn)行匹配的,如test.example.com, %.example.com,

%.com和%都可以匹配test.example.com這個(gè)主機(jī)。授權(quán)表中的User字段不允許使用模式匹配,但是可以有一個(gè)空字符的用戶名代表匿名

用戶,并且空字符串可以匹配所有的用戶名,就像通配符一樣。

當(dāng)user表中的Host和User有多個(gè)值可以匹配客戶端提供的主機(jī)和用戶名時(shí),MySQL將user表讀入內(nèi)存,并且按照一定規(guī)則排序,按照排序規(guī)則

讀取到的第一個(gè)匹配客戶端用戶名和主機(jī)名的條目對(duì)客戶端進(jìn)行身份驗(yàn)證。

二、排序規(guī)則:對(duì)于Host字段,按照匹配的精確程度進(jìn)行排序,越精確的排序越前,例如當(dāng)匹配test.example.com這個(gè)主機(jī)時(shí),

%.example.com比%.com更精確,而test.example.com比%.example.com更精確。對(duì)于User字段,非空的字符

串用戶名比空字符串匹配的用戶名排序更靠前。

User和Host字段都有多個(gè)匹配值,MySQL使用主機(jī)名排序最前的條目,在主機(jī)名字段相同時(shí)再選取用戶名排序更前的條目。因此,如果User和

Host字段都有多個(gè)匹配值,主機(jī)名最精確匹配的條目被用戶對(duì)用戶進(jìn)行認(rèn)證。

了解了這個(gè)認(rèn)證流程,就知道為什么server登錄失敗了。

使用GaMe在本機(jī)登錄數(shù)據(jù)時(shí),不指定-h參數(shù)默認(rèn)為localhost主機(jī)登錄,而在MySQL中有兩個(gè)匹配的條目:'server'@'%'?和 ''@'localhost'

匿名用戶能夠匹配的原因上面說(shuō)過(guò),空字符串可以匹配所有的用戶名,就像通配符一樣。

根據(jù)MySQL認(rèn)證時(shí)的排序規(guī)則,第一個(gè)條目的用戶名排序更前,第二個(gè)條目的主機(jī)名更精確,排序更前。

而MySQL會(huì)優(yōu)先使用主機(jī)名排序第一的條目進(jìn)行身份認(rèn)證,因此''@'localhost'被用戶對(duì)客戶端進(jìn)行認(rèn)證。因此,只有使用匿名用戶的空密碼才能登錄進(jìn)數(shù)據(jù)庫(kù)。就會(huì)出現(xiàn)下面的情況了。

解決的方法:刪除匿名用戶(僅僅為了安全也有這個(gè)必要)

為什么root用戶不會(huì)受影響,而只有普通用戶不能從本地登錄?

因?yàn)閙ysql_install_db腳本會(huì)在授權(quán)表中生成'root'@'localhost'這個(gè)賬戶。同樣的,使用root登錄MySQL

時(shí),'root'@'localhost'和''@'localhost'都能匹配登錄的賬戶,但是根據(jù)排序規(guī)則,主機(jī)名相同,而用戶名非空字符串優(yōu)先,

因此'root'@'localhost'這個(gè)條目的排序更靠前。使用root本地登錄是不會(huì)被匿名用戶遮蓋。

總結(jié)

以上是生活随笔為你收集整理的mysql以user1登录_在mysql中创建用户后不能本地登录的解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。