首頁 > 軟體

解決MySQL新增新使用者-ERROR 1045 (28000)的問題

2022-03-03 13:02:08

MySQL新增新使用者,見文章底部。

按照正常思維,建立使用者和設定密碼什麼的,應該是一個動作完成的。然而事實並非如此。

我每次都是通過在網上找程式碼來建立MySQL的使用者。如果無效,就再搜一段。
現在我心累了,必須寫個自己的教學。

1,先要連線到MySQL,工具就是在終端上輸入mysql。
一般來說可以設定幾個引數,重要的是-u代表使用者,比如root,或者guest,-p代表密碼,-h代表地址,如果是localhost,可以省略。
例子 mysql --user user --host localhost --port 3306 --password
回車之後輸入密碼即可。
偶爾會遇到直接使用sudo mysql可以登入的情況。

2,選擇mysql資料庫。

use mysql;

3,建立使用者,比如使用者名稱是demo,則使用

create user demo;

4,給使用者許可權。

grant all on *.* to 'demo'@'localhost' identified by 'password' ;

這裡是把運算元據庫的所有許可權給了demo,並且設定密碼是password
如果希望該使用者可以建立新的使用者,並授權,就使用新增with grant option

grant all on *.* to 'demo'@'localhost' identified by 'password' with grant option;

5,重新整理下。flush privileges;

問題:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)
很久沒用這臺電腦的mysql了,今天需要連線資料庫,啟動資料庫報錯:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)

解決方法:

查閱資料後知道了,應該使用已知的使用者名稱和密碼登陸

mysql -u root -p

然而密碼忘了,試了好幾遍終於試出來了:

然後修改成通用的密碼,不亂折騰了:

發現很多教學都過時了,我的版本是Server version: 8.0.19 MySQL ,最新的方法:

mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
mysql> flush privileges;

退出驗證下看看有沒有成功:

可以看到修改密碼成功了。

然後呢,我又假裝密碼忘了,把忘記密碼的修改密碼方法演示一下:
第一步:關閉Mysql服務
首先先停止mysql服務。可通過net stop mysql或者工作管理員中關閉。

以管理員許可權操作:(這是第一個視窗)

第二步:跳過Mysql密碼驗證
進入命令提示字元(管理員登陸)操作,進入mysql目錄中bin資料夾下,mysql8.0與其他版本不同的地方在於無法直接使用mysqld --skip-grant-tables來跳過密碼登入。在這我們使用mysqld -console --skip-grant-tables --shared-memory來跳過許可權驗證。

輸入執行後沒有反饋,新開一個管理員視窗重新執行。(這是第二個視窗)

進入目錄後,確保自己已經關閉了Mysql的服務:net stop mysql

關閉Mysql服務之後,繼續在D:mysql-8.0.19-winx64bin目錄下進行操作:
輸入

mysqld --console --skip-grant-tables --shared-memory

在輸入這行程式碼之後,如下顯示,我們就已經成功跳過Mysql的密碼登入了:

第三步:無密碼方式進入Mysql
在上述步驟之後,再開啟一個管理員模式執行的cmd.exe (這是第三個視窗)

進入mysql下的bin目錄後,直接登入mysql

不需要通過net start mysql開啟mysql服務

在命令列中輸入以下程式碼

d:
cd D:mysql-8.0.19-winx64bin(此處輸入自己電腦上的安裝目錄)
mysql -u root -p

如圖:

此時會顯示讓你輸入密碼,直接回車,就可以成功連線Mysql。

第四步:將登陸密碼設定為空
輸入程式碼,將密碼設定為空(此時還不能直接修改密碼,必須先設定為空,否則會報錯)
輸入:

use mysql; (使用mysql資料表)
update user set authentication_string='' where user='root';(將密碼置為空)
quit; (然後退出Mysql)

操作如圖:

第五步:更改自己的登陸密碼
這裡分為兩個部分

1.關閉前兩個cmd視窗(一定要關閉!);
2.在第三個視窗中輸入程式碼;

net stop mysql(關閉mysql服務,雖然會顯示沒有開啟服務,但是以防萬一)
net start mysql(再開啟mysql服務)

(這裡不要嫌麻煩,如果上一個mysql服務沒關閉,我們依舊是無密碼登陸)

操作如圖:

接著輸入:

cd D:mysql-8.0.19-winx64bin (此處輸入自己電腦上的安裝目錄)
mysql -u root -p

(此處會顯示輸入密碼,直接回車就好了,第四步我們已經將他置為空了)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';(更改密碼)

如圖:

最後一步:驗證密碼是否修改成功
輸入:

quit(退出mysql)
mysql -u root -p

(輸入新密碼,再次登入)

圖示:

補充:下面看下MySQL新增新使用者

按照正常思維,建立使用者和設定密碼什麼的,應該是一個動作完成的。然而事實並非如此。

我每次都是通過在網上找程式碼來建立MySQL的使用者。如果無效,就再搜一段。

現在我心累了,必須寫個自己的教學。

1,先要連線到MySQL,工具就是在終端上輸入mysql。

一般來說可以設定幾個引數,重要的是-u代表使用者,比如root,或者guest,-p代表密碼,-h代表地址,如果是localhost,可以省略。

例子 mysql --user user --host localhost --port 3306 --password

回車之後輸入密碼即可。

偶爾會遇到直接使用sudo mysql可以登入的情況。

2,選擇mysql資料庫。

use mysql;

3,建立使用者,比如使用者名稱是demo,則使用

create user demo;

4,給使用者許可權。

grant all on *.* to 'demo'@'localhost' identified by 'password' ;

這裡是把運算元據庫的所有許可權給了demo,並且設定密碼是password

如果希望該使用者可以建立新的使用者,並授權,就使用新增with grant option

grant all on *.* to 'demo'@'localhost' identified by 'password' with grant option;

5,重新整理下。flush privileges;

參考地址:https://bytes.com/topic/mysql/answers/614815-creating-new-mysql-user

到此這篇關於MySQL新增新使用者-ERROR 1045 (28000)解決辦法的文章就介紹到這了,更多相關MySQL ERROR 1045 (28000)內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com