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。

 

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