Mysql

向 MySQL V8 提供 root 密碼失敗

  • May 22, 2021

在 Ubuntu 20.04 上,我安裝了 MySQL V8.0.25。但是我有點無法應用(有效的)root密碼。安裝 mysql-server 的 apt-get 過程沒有要求輸入 root 密碼。而且我不能用“mysql -u roor -p”命令進入mysql,我總是用“sudo mysql”。

所以我首先嘗試了這個MySQL 頁面描述的過程。但這根本不起作用,因為 V8 似乎不支持 PASSWORD 功能。所以而不是執行

UPDATE mysql.user
   SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
   WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

我用這個:

UPDATE mysql.user 
  SET authentication_string = CONCAT('*', UPPER(SHA1(UNHEX(SHA1('MyNewPass'))))), password_expired = 'N' 
  WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

我發現這裡有描述。

查詢 select host, user, authentication_string, password_expired from mysql.user;展示了一張漂亮的桌子:

  +-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | authentication_string                                                  | plugin                |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| %         | joomla           | $A$005$MF`6ea"OfH5v1kTuRW0zJS5MKk82btugdAz62uWe6QkxnrXtTLtx5M. | caching_sha2_password |
| localhost | debian-sys-maint | $A$005$l%.r}2CBQT:+DV)a9S/UJUDJoFA8PhnCIE.E3zDFbBeUZ5vTrNSZpZDDv05 | caching_sha2_password |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
s%nn69n9�NkFf7xoPdW/CCD/NjvLhTKXtx8gQmTX.RpIbOcHWsA. | caching_sha2_password |
| localhost | root             | mypass                                                                 | auth_stock            |  
+-----------+------------------+------------------------------------------------------------------------+-----------------------+

但是“mysql -u root -p”仍然不能使用 suppiel 密碼。我仍然收到消息:

$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

我也試過這個 - 沒有任何成功:

UPDATE mysql.user 
  SET authentication_string = 'mypass', password_expired = 'N', plugin = '' 
  WHERE User = 'root' AND Host = 'localhost';

ALTER cmd 不起作用

兩者都不

ALTER USER 'root'@'localhost' IDENTIFIED BY 'oldpass';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

也不

ALTER USER 'root'@'localhost' IDENTIFIED BY 'oldpass' REPLACE 'mypass';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

我現在花了很多時間在這上面,不知道該怎麼做。任何幫助表示讚賞。

第 1 步:my.cnf在部分下的文件中添加以下參數[mysqld]

skip-grant-tables

第 2 步: 重啟 MySQL 實例。

**第 3 步:**登錄 MySQL 實例。(這不會問你密碼)

mysql -uroot -p

**第4步:**重置root密碼。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewRoot@123Pass';

**第 5 步:**從文件中刪除skip-grant-tables參數my.cnf並重新啟動 MySQL 實例。

第 6 步:root現在使用使用者名和新密碼登錄 MySQL 實例。

sudo是不必要的。(如果有必要,會出現其他問題。)

不要UPDATE在 8.0 中使用它,只使用GRANT和關聯的命令。

請注意,除非您指定使用者正在使用native_passwords.

引用自:https://dba.stackexchange.com/questions/291906