Kan niet inloggen op MySQL-database na nieuwe installatie met root-ID en leeg/geen wachtwoord zoals andere oudere MySQL-versies doen
Antwoord 1, autoriteit 100%
Er zijn zoveel antwoorden die zeggen dat je mysql opnieuw moet installeren of een combinatie van
. moet gebruiken
mysqld_safe --skip-grant-tables
en/of
UPDATE mysql.user SET Password=PASSWORD('password')
en/of iets anders …
… Niets van alles werkte voor mij
Dit is wat voor mij werkte, op Ubuntu 18.04, van bovenaf
Met speciaal tegoed voor dit antwoordom me uit de frustratie hierover te halen …
$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Let op de regels die luiden:
user = debian-sys-maint
password = blahblahblah
Dan:
$ 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
Ofwel:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Of:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Dan:
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!
Antwoord 2, autoriteit 71%
Nadat je MySQL-community-server 5.7 van vers op linux hebt geïnstalleerd, moet je het tijdelijke wachtwoord vinden in /var/log/mysqld.log om in te loggen als root.
grep 'temporary password' /var/log/mysqld.log
- Voer
mysql_secure_installation
uit om het nieuwe wachtwoord te wijzigen
ref: http://dev.mysql.com/doc /refman/5.7/en/linux-installation-yum-repo.html
Antwoord 3, autoriteit 21%
MySQL 5.7 heeft het beveiligde model gewijzigd: nu vereist MySQL root login een sudo
De eenvoudigste (en veiligste) oplossing is om een nieuwe gebruiker aan te maken en de vereiste rechten toe te kennen.
1. Verbinding maken met mysql
sudo mysql --user=root mysql
2. Maak een gebruiker aan voor phpMyAdmin
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Referentie – https://askubuntu.com/questions/763336 /cannot-enter-phpmyadmin-as-root-mysql-5-7
Antwoord 4, autoriteit 8%
MySQL-server 5.7 was al standaard geïnstalleerd op mijn nieuwe Linux Mint 19.
Maar wat is het MySQL root
-wachtwoord? Het blijkt dat:
De standaardinstallatie gebruikt auth_socket
voor authenticatie, in plaats van wachtwoorden!
Het maakt inloggen zonder wachtwoord mogelijk, op voorwaarde dat men met dezelfde gebruikersnaam op het Linux-systeem is ingelogd. Om in te loggen als de MySQL root user
, kan men sudo gebruiken:
sudo mysql --user=root
Maar hoe verander je dan het root-wachtwoord? Om te illustreren wat er aan de hand is, heb ik een nieuwe gebruiker “ik” gemaakt, met volledige rechten, met:
mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
“ik” vergelijken met “root”:
mysql> SELECT user, plugin, HEX(authentication_string) FROM mysql.user WHERE user = 'me' or user = 'root';
+------+-----------------------+----------------------------------------------------------------------------+
| user | plugin | HEX(authentication_string) |
+------+-----------------------+----------------------------------------------------------------------------+
| root | auth_socket | |
| me | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... |
+------+-----------------------+----------------------------------------------------------------------------+
Omdat het auth_socket gebruikt, kan het root-wachtwoord niet worden gewijzigd: de opdracht SET PASSWORD
mislukt en mysql_secure_installation
bereikt niets…
==> Om deze alternatieve authenticatiemodus te zappen en de MySQL root
-gebruiker terug te sturen naar het gebruik van wachtwoorden:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOME_NEW_ROOT_PASSWORD';
Een goede uitleg.
Meer details uit de MySQL-handleiding.
Antwoord 5, autoriteit 5%
Als je mysql of percona onbeheerd wilt installeren (zoals in mijn geval ansible), kun je het volgende script gebruiken:
# first part opens mysql log
# second part greps lines with temporary password
# third part picks last line (most recent one)
# last part removes all the line except the password
# the result goes into password variable
password=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n 's/.*root@localhost: //p')
# setting new password, you can use $1 and run this script as a file and pass the argument through the script
newPassword="wh@teverYouLikE"
# resetting temporary password
mysql -uroot -p$password -Bse "ALTER USER 'root'@'localhost' IDENTIFIED BY '$newPassword';"
Antwoord 6, autoriteit 4%
MySQL 5.7 of nieuwer genereert een standaard tijdelijk wachtwoord na een nieuwe installatie.
Om eerst MySQL te gebruiken, moet u dat wachtwoord ophalen uit het logbestand dat aanwezig is op de /var/log/mysqld.log
. Volg dus het volgende proces:
-
grep 'temporary password' /var/log/mysqld.log
-
mysql_secure_installation
Het tweede commando is nodig om het wachtwoord voor MySQL te wijzigen en ook om bepaalde andere wijzigingen aan te brengen, zoals het verwijderen van tijdelijke databases, het toestaan of weigeren van toegang op afstand aan rootgebruikers, het verwijderen van anonieme gebruikers enz…