2016-10-02 125 views
0

安裝mysql時,我沒有在root密碼字段中輸入任何內容,但是當我運行mysql -u root時,我仍然得到了Access denied for user 'root'@'localhost'無法將root密碼設置爲空

我以安全模式啓動mysql,沒有授權表,sudo mysql_safe --skip-grant-tables &,然後跳入mysql -u root沒有問題。

然後我做了use mysql; update user set authentication_string=null where user='root';和我:

Query OK, 0 rows affected (0.00 sec) 
Rows matched: 1 Changed: 0 Warnings: 0 

任何人有原因的密碼沒有更新任何見解?

回答

0

我不得不把插件設置爲mysql_native_password,所以密碼重置部分看起來是這樣的:

update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; FLUSH PRIVILEGES; 
0

你忘

FLUSH PRIVILEGES; 

步步它會是這樣

停止MySQL服務器。

sudo /etc/init.d/mysql stop 

啓動mysqld配置。

sudo mysqld --skip-grant-tables & 

以root用戶身份登錄MySQL。

mysql -u root mysql 

用您的新密碼替換YOURNEWPASSWORD!

UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit; 
+0

看看輸出的最後幾行。最後一行應該說'行匹配:1改變:1警告:0'。 'FLUSH PRIVILEGES;'這裏什麼都不做,因爲沒有任何變化。而且,在MySQL 5.7中'password'字段已被'authentication_string'替換。 –

+0

是的,你是對的,我沒有看到「0行受影響」。選擇用戶表並查看錶中存在的根用戶 –