Der er så mange svar derude, der siger at geninstallere mysql eller bruge en kombination af
mysqld_safe --skip-grant-tables
og/eller
UPDATE mysql.user SET Password=PASSWORD('password')
og/eller noget andet ...
... Intet af det virkede for mig
Her er, hvad der virkede for mig, på Ubuntu 18.04, fra toppen
Med særlig ære til dette svar for at grave mig ud af frustrationen over dette ...
$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Bemærk linjerne, der lyder:
user = debian-sys-maint
password = blahblahblah
Så:
$ 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
Enten:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Eller:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Så:
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!