Има толкова много отговори, които казват да преинсталирате 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!