天天看點

mysql密碼更改不了解決方法

mysql密碼更改不了解決方法

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

今天在MySql5.7操作時報錯:You must SET PASSWORD before executing this statement解決方法,需要的朋友可以參考下

ERROR 1820 (HY000): You must SET PASSWORD before executing this statement 

非常詭異啊,明明用密碼登陸進去了,怎麼還提示需要密碼。 

參考官方的一個文檔,見http://dev.mysql.com/doc/refman/5.6/en/alter-user.html。如下操作後就ok了: 

mysql> create database yan1; 

mysql> SET PASSWORD = PASSWORD('123456'); 

Query OK, 0 rows affected (0.03 sec) 

Query OK, 1 row affected (0.00 sec) 

也就是用mysql> SET PASSWORD = PASSWORD('123456');這句話重新設定一次密碼!大爺的,真費勁啊。 

這位仁兄也遇到了相同的問題。 

最近新裝好的mysql在進入mysql工具時,總是有錯誤提示: 

# mysql -u root -p 

Enter password: 

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 

或者 

# mysql -u root -p password 'newpassword' 

mysqladmin: connect to server at 'localhost' failed 

error: 'Access denied for user 'root'@'localhost' (using password: YES)' 

現在終于找到解決方法了。本來準備重裝的,現在不必了。 

方法操作很簡單,如下: 

# /etc/init.d/mysql stop 

# mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 

# mysql -u root mysql 

mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root' and host='root' or host='localhost';//把空的使用者密碼都修改成非空的密碼就行了。 

mysql> FLUSH PRIVILEGES; 

mysql> quit # /etc/init.d/mysqld restart 

# mysql -uroot -p 

Enter password: <輸入新設的密碼newpassword> 

MySql5.6操作時報錯:You must SET PASSWORD before executing this statement解決 

mysql> create database roger; 

也就是用mysql> SET PASSWORD = PASSWORD('123456');這句話重新設定一次密碼!

如果 MySQL 正在運作,首先殺之: killall -TERM mysqld。 

運作mysqld_safe --skip-grant-tables & 

如果此時不想被遠端連接配接:mysqld_safe --skip-grant-tables --skip-networking &

使用mysql連接配接server

更改密碼:update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';

*特别提醒注意的一點是,新版的mysql資料庫下的user表中已經沒有Password字段了

而是将加密後的使用者密碼存儲于authentication_string字段

mysql> flush privileges;

mysql> quit;

修改完畢。重新開機

killall -TERM mysqld。 

mysqld_safe &

然後mysql就可以連接配接了

但是此時操作似乎功能不完全,還要alter user...

alter user 'root'@'localhost' identified by '123';

網文說醬紫也可以:set password for 'root'@'localhost'=password('123');

cp mysql.server /etc/init.d/mysql      
chmod +x /etc/init.d/mysql      
chkconfig --add mysql      
 mysql> SET PASSWORD = PASSWORD('new_password'); 

Query OK, 0 rows affected (0.01 sec) 

mysql> SELECT 1; 
+---+ | 1 | +---+ | 1 | +---+ 

1 row in set (0.00 sec)      

繼續閱讀