Unexpected server response while doing caching_sha2 auth: 109 或者 (HY000/1045)

mysqli::real_connect(): Unexpected server response while doing caching_sha2 auth: 109 或者 Message: mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'114.254.211.9' (using password: YES).

前提條件:確定用戶和密碼已支持遠(yuǎn)程連接, 且密碼的加密規(guī)則已修改為 密碼驗(yàn)證插件 mysql_native_password 支持的密碼

報(bào)錯(cuò) mysqli::real_connect(): Unexpected server response while doing caching_sha2 auth: 109 來(lái)源1:mysql_native_password 本地可以連钞护,線上連不了

    分析:
        確認(rèn)過(guò)后版本一致盖喷,判斷是 mysql 的配置問(wèn)題
    解決:
        [mysqld]
        default_authentication_plugin = mysql_native_password

        重啟數(shù)據(jù)庫(kù)
    結(jié)果:
        成功

報(bào)錯(cuò) mysqli::real_connect(): Unexpected server response while doing caching_sha2 auth: 109 來(lái)源2:mysql_native_password 線上可以連,本地由php 7.3.x 更新為 php 7.4.x 之后連不了

    分析:
        php 7.4.x 之前 mysqli 擴(kuò)展連接默認(rèn)是用 mysql_native_password 密碼驗(yàn)證插件难咕,
        php 7.4.x 之后 mysqli 擴(kuò)展連接默認(rèn)是用 caching_sha2_password 密碼驗(yàn)證插件课梳。
        所以php 7.4 之后在 mysql 配置中不默認(rèn)驗(yàn)證插件為 mysql_native_password 時(shí), mysqli擴(kuò)展 會(huì)使用 caching_sha2_password 密碼驗(yàn)證插件連接, 故報(bào)錯(cuò)余佃。
    解決:
        1. 重裝 php 環(huán)境到 7.4.0 以下版本 【不推薦】
        2. 根據(jù)上面來(lái)源進(jìn)行解決:
            [mysqld]
            default_authentication_plugin = mysql_native_password

            重啟數(shù)據(jù)庫(kù)

報(bào)錯(cuò) Message: mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'114.254.211.9' (using password: YES) 來(lái)源:php 7.4.x 環(huán)境中暮刃,在剛使用 docker 創(chuàng)建的數(shù)據(jù)庫(kù)時(shí)默認(rèn)的密碼驗(yàn)證插件就是 caching_sha2_password ,而且可以連爆土;之后同樣密碼驗(yàn)證插件是 caching_sha2_password椭懊,使用 navicate 修改密碼后連不了。

    分析-1:
        php 7.4.x 的mysqli擴(kuò)展支持新的 caching_sha2_password步势,判斷 navicat 使用的密碼驗(yàn)證插件 caching_sha2_password 版本問(wèn)題
    解決:
        在 mysql 最新的客戶端使用密碼驗(yàn)證插件 caching_sha2_password 修改密碼
        ALTER USER 'root'@'%' IDENTIFIED BY 'ffc' PASSWORD EXPIRE NEVER;
        ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'ffc';
        FLUSH PRIVILEGES;
    結(jié)果:
        失敗, 仍然報(bào)錯(cuò):Message: mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'114.254.211.9' (using password: YES). 
    結(jié)論:
        與 navicate 的密碼驗(yàn)證插件無(wú)關(guān)

    分析-2: 
        與操作執(zhí)行的順序有關(guān)氧猬。因?yàn)楫?dāng)前用戶在修改當(dāng)前用戶的密碼驗(yàn)證方式背犯,導(dǎo)致此連接不再可用,那么修改之后是否生效呢狂窑?
    解決:
        在 navicat 或者 mysql 客戶端中媳板, 在當(dāng)前用戶登錄連接后桑腮,
        通過(guò)密碼驗(yàn)證插件 caching_sha2_password 修改當(dāng)前用戶的密碼泉哈,
        然后使用當(dāng)前用戶的用戶名和新密碼重新連接成功后,
        成功在 php 7.4.x 的 mysqli 擴(kuò)展中可以正常連接破讨。


    思考:
        如果修改的不是當(dāng)前用戶的密碼丛晦,是否需要斷開(kāi)重新連接呢?
    答案:
        是需要的提陶,并且要使用修改的用戶的用戶名和新密碼進(jìn)行重新登錄mysql服務(wù)器后烫沙,才可以在 php 7.4.x 的 mysqli 擴(kuò)展中連接。

在解決問(wèn)題之后隙笆,對(duì)密碼驗(yàn)證插件 caching_sha2_password 有些模糊锌蓄,果然在官網(wǎng)找到了相應(yīng)解釋

    Cache clearing operations affect the authentication requirements for subsequent client connections. For each user account, the first client connection for the user after any of the following operations must use a secure connection (made using TCP using TLS credentials, a Unix socket file, or shared memory) or RSA key pair-based password exchange:

        After account creation.

        After a password change for the account.

        After RENAME USER for the account.

        After FLUSH PRIVILEGES.

    FLUSH PRIVILEGES clears the entire cache and affects all accounts that use the caching_sha2_password plugin. The other operations clear specific cache entries and affect only accounts that are part of the operation.

    Once the user authenticates successfully, the account is entered into the cache and subsequent connections do not require a secure connection or the RSA key pair, until another cache clearing event occurs that affects the account. (When the cache can be used, the server uses a challenge-response mechanism that does not use cleartext password transmission and does not require a secure connection.)

大概意思就是:

緩存清除操作會(huì)影響后續(xù)客戶端連接的身份驗(yàn)證要求。
對(duì)于每個(gè)用戶帳戶撑柔,在執(zhí)行以下任何操作之后瘸爽,
該用戶的第一個(gè)客戶端連接必須使用安全連接(使用TLS憑證,Unix套接字文件或共享內(nèi)存的TCP進(jìn)行安全連接)或基于RSA密鑰對(duì)的密碼交換:
    創(chuàng)建帳戶后铅忿。
    更改帳戶密碼后剪决。
    為該帳戶 RENAME USER之后。
    FLUSH PRIVILEGES 之后檀训。
FLUSH PRIVILEGES清除整個(gè)緩存并影響使用該caching_sha2_password插件的所有帳戶 柑潦。其他操作將清除特定的緩存條目,并且僅影響屬于該操作的帳戶峻凫。

總結(jié):

  1. php 7.4.x 的 mysqli 擴(kuò)展中默認(rèn)密碼驗(yàn)證插件為:caching_sha2_password
  2. 密碼驗(yàn)證插件為:caching_sha2_password 的用戶渗鬼,在修改密碼之后必須要重新使用客戶端成功連接后方可在php 7.4.x 的 mysqli 擴(kuò)展中連接。而密碼驗(yàn)證插件為:mysql_native_password 的用戶不需要重新通過(guò)客戶端連接成功即可在php 7.4.x 的 mysqli 擴(kuò)展中連接

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荧琼,一起剝皮案震驚了整個(gè)濱河市譬胎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铭腕,老刑警劉巖银择,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異累舷,居然都是意外死亡浩考,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門被盈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)析孽,“玉大人搭伤,你說(shuō)我怎么就攤上這事⊥嗨玻” “怎么了怜俐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)邓尤。 經(jīng)常有香客問(wèn)我拍鲤,道長(zhǎng),這世上最難降的妖魔是什么汞扎? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任季稳,我火速辦了婚禮,結(jié)果婚禮上澈魄,老公的妹妹穿的比我還像新娘景鼠。我一直安慰自己,他們只是感情好痹扇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布铛漓。 她就那樣靜靜地躺著,像睡著了一般鲫构。 火紅的嫁衣襯著肌膚如雪浓恶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天芬迄,我揣著相機(jī)與錄音问顷,去河邊找鬼。 笑死禀梳,一個(gè)胖子當(dāng)著我的面吹牛杜窄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播算途,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼塞耕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嘴瓤?” 一聲冷哼從身側(cè)響起扫外,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎廓脆,沒(méi)想到半個(gè)月后筛谚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡停忿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年驾讲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吮铭,死狀恐怖时迫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谓晌,我是刑警寧澤掠拳,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站纸肉,受9級(jí)特大地震影響溺欧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毁靶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一胧奔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧预吆,春花似錦、人聲如沸胳泉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扇商。三九已至凤瘦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間案铺,已是汗流浹背蔬芥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留控汉,地道東北人笔诵。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像姑子,于是被迫代替她去往敵國(guó)和親乎婿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容