1. 程式人生 > 資料庫 >解決centos下MySQL登入1045問題

解決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。

可以看到登入已經成功了,遠端連線也能成功,就不演示了,如果遠端登入還不成功,檢查一下埠設定,是否開啟了遠端訪問。

總結

以上所述是小編給大家介紹的解決centos下MySQL登入1045問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!