向 MySQL V8 提供 root 密碼失敗
在 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
.