Stewart..
106
有很多答案说重新安装mysql或使用一些组合
mysqld_safe --skip-grant-tables
和/或
UPDATE mysql.user SET Password=PASSWORD('password')
和/或别的......
......这些都不适合我
这是我在Ubuntu 18.04上从顶部起作用的
特别赞赏这个答案让我从这个沮丧中解脱出来......
$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
请注意以下行:
user = debian-sys-maint
password = blahblahblah
然后:
$ mysql -u debian-sys-maint -p
Enter password: // type 'blahblahblah', ie. password from debian.cnf
mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| root | localhost | auth_socket |
| mysql.session | localhost | mysql_native_password |
| mysql.sys | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT; // When you don't have auto-commit switched on
或者:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
要么:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
然后:
mysql> FLUSH PRIVILEGES;
mysql> COMMIT; // When you don't have auto-commit switched on
mysql> EXIT
$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password' now works!
最初没有为我工作.然后我尝试在EXIT之前发出一个COMMIT,它工作正常! (4认同)
我已按照这些步骤操作,但对我来说不起作用.一切看起来都不错,但是一旦我重新启动MySQL,插件值就会重置为`auth_socket`.知道缺少什么吗? (3认同)
测试了这个。默认情况下与** 18.04 LTS一起安装的mysql ** 5.7 + **使用`UPDATE mysql.user SET authentication_string = PASSWORD('new_password')where user ='root';更改密码,因此,您需要运行而不是由'new_password'标识的'ALTER USER'root'@'localhost';` (3认同)
为我工作但不使用:mysql -u debian-sys-maint -p,我不得不使用:sudo mysql -u root.当我使用第一个时,即使使用COMMIT也没有保存更改 (2认同)
需要在“冲洗特权”之前进行“提交”。 (2认同)