欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL8.x登陸root用戶突然提示mysql_native_password的實(shí)現(xiàn)

 更新時間:2024年08月26日 09:16:01   作者:weixin_42151614  
本文主要介紹了MySQL 8.x登陸root用戶突然提示mysql_native_password,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、在mysql 8.0x版本中,默認(rèn)的加密認(rèn)證方式從原來的mysql_native_password 變成了caching_sha2_password,如果我們不在my.cnf里面去設(shè)置加密認(rèn)證方式的話,它默認(rèn)用的就是caching_sha2_password

2、但現(xiàn)在有一個很奇怪的現(xiàn)象,不知道是何種原因,即便我們創(chuàng)建了用戶,并且也設(shè)置了caching_sha2_password,但是它默認(rèn)還是會以mysql_native_password作為認(rèn)證,這樣就會導(dǎo)致mysql_native_password模式被拒絕,因?yàn)槟J(rèn)情況下mysql只會接受caching_sha2_password,特別是在部分情況下,root用戶的localhost也會變成mysql_native_password,那這樣就會導(dǎo)致我們在使用mysql -uroot -p -h localhost登陸的時候直接被拒絕掉,從而顯示ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded,這個具體問題不知道是什么原因?qū)е碌?,后面再去定位,現(xiàn)在只是做個記錄,如果出現(xiàn)了這種情況應(yīng)該怎么做

3、由于我的mysql容器是以docker-compose來運(yùn)行的,如果我們root用戶被擋了,只能以安全模式跳過root認(rèn)證,需要修改docker-compose的配置文件如下

version: '3.8'

services:
  mysql82:
    image: mysql:8.4
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - /mnt/mysql/data:/var/lib/mysql
      - /mnt/mysql/logs:/var/log/mysql
      - /mnt/mysql/conf/my.cnf:/etc/mysql/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: "你自己的root密碼"
      TZ: Asia/Shanghai 
      command: --skip-grant-tables

在底部添加command: --skip-grant-tables即可,然后重啟容器

4、如果是宿主機(jī)安裝的方式,需要停止mysql的服務(wù),然后用安全模式啟動

systemctl stop mysql

mysqld_safe --skip-grant-tables &

5、修改完畢后,登陸mysql

mysql -uroot -p 

這時候應(yīng)該是不需要密碼直接按回車就能進(jìn)入

6、查看用戶表,看下當(dāng)前有哪些用戶的認(rèn)證模式是:mysql_native_password

USE mysql;

SELECT User, Host, plugin FROM user;

不出意外的話,如果我們root用戶被擋了,那么認(rèn)證模式肯定變成了mysql_native_password
但是默認(rèn)情況下mysql_native_password插件又沒有啟動,所以我們在正常模式下會被擋在外面,這就是問題所在

但問題是我們壓根就不知道m(xù)ysql_native_password是如何被啟動的,或者root用戶為啥從原來的caching_sha2_password 變成了mysql_native_password

7、如果localhost 的root用戶的認(rèn)證模式變成了mysql_native_password,這也是為何我們沒辦法進(jìn)去的原因,我們需要把它改成caching_sha2_password,這樣我們就可以登錄了

USE mysql;

UPDATE user SET plugin='caching_sha2_password', authentication_string='' WHERE User='root' AND Host='localhost';

FLUSH PRIVILEGES;

注意:我們這里是直接修改root的認(rèn)證模式,然后authentication_string='' 設(shè)置的是一個空的字符串密碼,這里不可以直接指定你的root密碼,因?yàn)槭敲魑牡?,mysql不允許,也不接受,所以就先保留空,等后面進(jìn)入到正常模式再去修改

8、將mysql設(shè)置成正常模式

如果是docker-compose啟動的,把command: --skip-grant-tables這一行推薦注釋掉(萬一以后還要出現(xiàn)直接打開即可)

然后docker-compose down  && docker-compose up -d 

宿主機(jī)安裝的情況下,直接ps aux | grep "mysqld_safe --skip-grant-tables"  
把這個進(jìn)程給kill掉,
然后systemctl start mysql正常啟動即可

9、進(jìn)入到正常模式后,由于localhost的root用戶此時是空密碼,直接按回車就可以進(jìn)去,進(jìn)去之后立即修改root的密碼,密碼還是可以設(shè)置成原來的,然后在改密碼的時候再指定認(rèn)證類型為caching_sha2_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '這里最好是設(shè)置成你原來的root密碼';

10、修改完成之后,我們退出來重新登錄驗(yàn)證一下新修改的密碼能不能使用localhost登錄進(jìn)去

mysql -uroot -p

11、如果可以登陸的話,說明我們被擋在外面的問題就解決掉了,接下來就是把其他用戶認(rèn)證類型為mysql_native_password改成caching_sha2_password,這里主要是修改用戶的密碼和認(rèn)證方式,所以修改之前最好保持和知道之前原來的密碼,這樣可以減少很多不必要的操作,特別是如果這個用戶是某一個代碼里使用的

假設(shè)root用戶已經(jīng)登錄進(jìn)來了,說明root用戶的認(rèn)證模式已經(jīng)改回來了

接下來我們在查看一下其他用戶的認(rèn)證情況

USE mysql;

SELECT User, Host, plugin FROM user;

根據(jù)結(jié)果提示,把mysql_native_password的用戶都改成caching_sha2_password

這里的修改認(rèn)證類型主要是通過修改該用戶的密碼,然后再重新指定認(rèn)證類型

但是在修改之前,最好將該用戶的密碼修改成和之前一樣的,這樣可以減少很多不必要的麻煩,當(dāng)然你也可以使用新的自定義密碼

#假如我現(xiàn)在需要將javatest這個用戶的認(rèn)證類型從原來的mysql_native_password改成caching_sha2_password,使用如下SQL語句即可,但是修改之前要看一下該用戶之前授權(quán)的遠(yuǎn)程IP地址是什么,要嚴(yán)格的對應(yīng)上,我這里是%,你們根據(jù)實(shí)際情況修改

ALTER USER 'javatest'@'%' IDENTIFIED WITH 'caching_sha2_password' BY '該用戶的新密碼';

#刷新權(quán)限
FLUSH PRIVILEGES;

12、到此完成

到此這篇關(guān)于MySQL 8.x登陸root用戶突然提示mysql_native_password的文章就介紹到這了,更多相關(guān)MySQL 8.x登陸root用戶突然提示mysql_native_password內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中any、some和all的用法實(shí)例

    MySQL中any、some和all的用法實(shí)例

    最近一直在練習(xí)MYSQL的多表查詢,基本上每個查詢語句我都會寫至少兩次,下面這篇文章主要給大家介紹了關(guān)于MySQL中any、some和all用法的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • MYSQL中文亂碼問題的解決方案

    MYSQL中文亂碼問題的解決方案

    mysql是我們項(xiàng)目中非常常用的數(shù)據(jù)型數(shù)據(jù)庫,但是因?yàn)槲覀冃枰跀?shù)據(jù)庫保存中文字符,所以經(jīng)常遇到數(shù)據(jù)庫亂碼情況這篇文章主要給大家介紹了關(guān)于MYSQL中文亂碼問題的解決方案,需要的朋友可以參考下
    2022-06-06
  • Windows平臺下MySQL常用操作與命令

    Windows平臺下MySQL常用操作與命令

    Windows平臺下MySQL常用操作與命令,學(xué)習(xí)mysql的朋友可以參考下。
    2011-09-09
  • MySQL如何使用DATE_FORMAT()對查詢結(jié)果按日、周、月分組統(tǒng)計(jì)

    MySQL如何使用DATE_FORMAT()對查詢結(jié)果按日、周、月分組統(tǒng)計(jì)

    這篇文章主要介紹了MySQL如何使用DATE_FORMAT()對查詢結(jié)果按日、周、月分組統(tǒng)計(jì)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Linux連接mysql報錯:Access denied for user ‘root’@‘localhost’(using password: YES)的解決方法

    Linux連接mysql報錯:Access denied for user ‘root’@‘localhost’(usi

    這篇文章主要給大家介紹了關(guān)于Linux連接mysql數(shù)據(jù)庫報錯:Access denied for user ’root‘@’localhost‘(using password: YES)的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 簡單了解MySQL union all與union的區(qū)別

    簡單了解MySQL union all與union的區(qū)別

    這篇文章主要介紹了簡單了解MySQL union all與union的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • MySQL官方導(dǎo)出工具mysqlpump的使用

    MySQL官方導(dǎo)出工具mysqlpump的使用

    備份恢復(fù)是 DBA 繞不開的核心話題,市面上也有很多開源的備份恢復(fù)方案,不過官方的 mysqldump 一直是處于鄙視鏈底端的那個。終于,官方在 MySQL5.7 之后新添加了一個備份工具:mysqlpump,本文將簡單的介紹該工具的使用
    2021-05-05
  • mysqldumpslow用法示例(慢查詢)

    mysqldumpslow用法示例(慢查詢)

    這篇文章主要介紹了mysqldumpslow是mysql自帶的用來分析慢查詢的工具,需要的朋友可以參考下
    2016-08-08
  • MySQL實(shí)現(xiàn)數(shù)據(jù)批量更新功能詳解

    MySQL實(shí)現(xiàn)數(shù)據(jù)批量更新功能詳解

    最近需要批量更新大量數(shù)據(jù),習(xí)慣了寫sql,所以還是用sql來實(shí)現(xiàn),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL批量更新的方式,需要的朋友可以參考下
    2023-02-02
  • mysql數(shù)據(jù)庫之索引詳細(xì)介紹

    mysql數(shù)據(jù)庫之索引詳細(xì)介紹

    大家好,本篇文章主要講的是mysql數(shù)據(jù)庫之索引詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論