centos下MySQL登錄1045問題解決


由於需要在centos下部署整個應用,自然少不了對數據庫的操作。但很多人可能會遇到一些問題,比如創建用戶成功,但是卻無法登錄。

無法登陸一般就兩個原因。第一,遠程訪問端口沒開,第二個原因就是密碼錯誤了(很奇怪,我們登錄時的密碼明明是正確的,但還是會提示密碼錯誤,我也不知道這是什么原因,有可能是編碼之類的吧)

遠程訪問端口沒開這種情況比較好解決,如果用的雲服務器,在控制台去配置安全組,打開相應端口就可以了。

這里說一下第二種錯誤,這個比較坑。第二種情況往往會報錯顯示:1045    Access denied for user 'root'@'%' (using password:YES)。

我把完整流程大致寫一遍。我的操作系統是centos7.4,MySQL版本是5.7。

首先登陸mysql,我的是root用戶。登錄命令是

mysql -u root -p

輸入登錄密碼后,窗口變化如下圖:

 

首先看一下現在系統里面有哪些用戶,以及用戶的具體權限,具體命令:

查看用戶:

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

查看具體用戶的權限:

show grants for 'root'@'%';

窗口變化如下圖:

 

接下來我要創建一位用戶,讓改用戶能夠遠程訪問數據庫,並對其進行操作。具體命令如下:

create user zhangsanidentified by 'zhangsan.CQU.2020.lisi';
grant all privileges on *.* to zhangsan@'%' identified by 'zhangsan.CQU.2020.lisi';

或者一條命令直接搞定:

grant all privileges on *.* to 'zhangsan'@'%' identified by 'zhangsan.CQU.2020.lisi' with grant option;

操作完成后,千萬記得刷新,否則可能不生效,命令如下:

flush privileges;

此時再查看用戶,就能發現多了一位用戶,也就是我們剛才創建的用戶。

 

輸入exit,退出MySQL,然后試着用zhangsan這個賬戶登錄一下。

 

問題順利出現了,就是登不上去,接下來去解決這個問題咯。

首先,找到自己的MySQL的my.cnf文件,(我的在etc文件夾下面,不同的人可能不一樣,用Linux命令按條件查找即可)

打開文件后(vi my.cnf),進入編輯模式(a)找到mysqld關鍵字,在mysqld下面添加skip-grant-tables,保存退出(先esc,再:wq),如圖:

 

 將注釋去掉即可。

然后重啟mysql,命令如下:

service mysqld restart

接下來就是重新登錄,然后修改密碼啦。

 

 提示輸入密碼那里,直接enter,跳過密碼驗證,登陸成功。接下來進入mysql數據庫,然后修改密碼,命令如下。

use mysql

修改密碼:

update user set authentication_string=password("zhangsan.CQU.2020.lisi") where user="zhangsan";

如圖:

 

然后退出mysql,將剛剛修改過的my.cnf文件改回來,並重新啟動mysql。

 

可以看到登錄已經成功了,遠程連接也能成功,就不演示了,如果遠程登錄還不成功,檢查一下端口設置,是否開啟了遠程訪問。


免責聲明!

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



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