centos虛擬機下的mysql登錄時出現Access denied for user 'root'@'localhost' (using password: YES) 及外部拒絕訪問的解決方法


centos虛擬機下的mysql登錄時出現Access denied for user 'root'@'localhost' (using password: YES) 及外部拒絕訪問的解決方法

先說下我的情況,我用的mysql是docker部署的。然后在使用過程遇到兩個問題。

1.外部拒絕訪問,就是想Navicat或者sqlyog的外部軟件訪問報錯。

2.在linux下的mysql命令行登錄也出現權限問題。

第一個問題的解決方法挺簡單的,就是授予權限。但是授予權限是要在mysql命令行下執行的,然后就因為第二個問題,mysql登錄不進去,給卡死了。下面說下解決方法。

1.MySQL登錄出現權限拒絕問題

解決方法就是重置密碼。。沒錯,沒有什么方法比‘重啟‘更管用。步驟如下:

1.跳過認證啟動

首先進入到容器中。

image-20200324222959429

mysql是我的數據庫名稱。命令的意思是:

image-20200324223159616

然后編輯mysql配置文件,使用vi終端編輯器

vi /etc/mysql/conf.d/docker.cnf

在docker.cnf文件下新增skip-grant-tables

image-20200324223824747

然后保存退出。這樣下次登錄mysql就不用密碼了。然后重新啟動容器。

docker restart mysql

這一步要說下vi終端編輯器的工作模式。

編輯模式:按”i“進入,按esc退出編輯模式進入命令模式

命令模式:就是最開始的狀態

末行模式:在命令模式下按“:”進入,末行模式輸入wq就是保存退出(w是write,q是quit)。q!是強制退出

2.重新設置密碼

同第一樣在進入mysql容器后,直接輸入mysql就登錄成功。

image-20200324224817258

接着重新設置密碼。

#使用mysql自帶的mysql數據庫。

use mysql;

#更改user表下的密碼。

UPDATE user SET authentication_string = password ( 'a123456' ) WHERE User = 'root';

#刷新權限

flush privileges;

#退出

quit;

image-20200324225351562

image-20200324225411279

注意!!!這里有個坑,user表的密碼的屬性名是authentication_string

3.刪除第一步的跳過認證啟動

重新進入docker容器。在docker.cnf文件下刪掉skip-grant-tables

4.重啟mysql容器

再次重新啟動后,就可以登錄mysql。

image-20200324230015045

2.外部拒絕訪問問題解決

在mysql命令行下輸入:

mysql> GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
這里用戶名和密碼都是你自己的。另外說一下grant命令的解釋:

grant 權限1,權限2, ... 權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by '連接口令';

權限1,權限2,... 權限n 代表 select、insert、update、delete、create、drop、index、alter、grant、references、reload、shutdown、process、file 等14個權限。
當權限1,權限2,... 權限n 被 all privileges 或者 all 代替時,表示賦予用戶全部權限。
當 數據庫名稱.表名稱 被 . 代替時,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是IP地址、機器名和域名。也可以用 '%' 表示從任何地址連接。
'連接口令' 不能為空,否則創建失敗。

參考資料

https://blog.csdn.net/u012467855/article/details/81266470
https://blog.csdn.net/qq_36675754/article/details/81381341


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM