Có rất nhiều câu trả lời trên mạng nói rằng hãy cài đặt lại mysql hoặc sử dụng một số kết hợp
mysqld_safe --skip-grant-tables
và / hoặc
UPDATE mysql.user SET Password=PASSWORD('password')
và / hoặc thứ gì đó khác ...
... Không ai trong số đó hiệu quả với tôi
Đây là những gì đã làm việc cho tôi, trên Ubuntu 18.04, từ đầu
Với tín dụng đặc biệt cho cái này câu trả lời vì đã giúp tôi thoát khỏi sự thất vọng về điều này ...
$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Lưu ý các dòng có nội dung:
user = debian-sys-maint
password = blahblahblah
Sau đó:
$ 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
Một trong hai:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Hoặc:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Sau đó:
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!