Impossible de se connecter à la base de données MySQL après une nouvelle installation avec un ID racine et un mot de passe vide/sans mot de passe, contrairement aux versions plus anciennes de MySQL
Après avoir installé MySQL-community-server 5.7 à partir de fresh sur linux, vous devez trouver le mot de passe temporaire dans /var/log/mysqld.log pour vous connecter en tant que root.
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
pour changer le nouveau mot de passeref: http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
Il y a tellement de réponses qui disent de réinstaller mysql ou d'utiliser un combo de
mysqld_safe --skip-grant-tables
et/ou
UPDATE mysql.user SET Password=PASSWORD('password')
et/ou autre chose ...
... Rien de tout cela ne fonctionnait pour moi
Voici ce qui a fonctionné pour moi, à partir du haut sur Ubuntu 18.04
Avec un crédit spécial à cette réponse pour m'avoir sorti de la frustration qui règne à ce sujet ...
$ Sudo apt install mysql-server
$ Sudo cat /etc/mysql/debian.cnf
Notez les lignes qui se lisent:
user = debian-sys-maint
password = blahblahblah
Ensuite:
$ 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
Soit:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Ou:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Ensuite:
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!
MySQL 5.7 a changé le modèle sécurisé: maintenant, la connexion root à MySQL nécessite un serveur Sudo
La solution la plus simple (et la plus sûre) sera de créer un nouvel utilisateur et d’accorder les privilèges requis.
1. Se connecter à mysql
Sudo mysql --user=root mysql
2. Créez un utilisateur pour phpMyAdmin
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Référence - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7
Si vous voulez installer mysql ou percona sans surveillance (comme dans mon cas ansible), vous pouvez utiliser le script suivant:
# 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';"
Je viens d'installer Linux Mint 19 (basé sur Ubuntu 18.04) sur ma machine. J'ai installé MySQL 5.7 à partir du référentiel ( Sudo apt installer mysql-server ) et, de manière surprenante, lors de l'installation, la configuration ne vous a pas demandé d'entrer root mot de passe. En conséquence, je n'ai pas pu me connecter à MySQL. J'ai googlé ici et là et essayé diverses réponses trouvées sur le net, y compris la réponse acceptée ci-dessus. J'ai désinstallé (en purgeant tous les dpkgs avec mysql dans son nom) et réinstallé à partir des référentiels Linux Mint par défaut. AUCUN ne fonctionne.
Après des heures de travaux non productifs, j'ai décidé de réinstaller MySQL à partir de la page officielle. J'ai ouvert la page de téléchargement de MySQL ( https://dev.mysql.com/downloads/repo/apt ) pour repo apt et j'ai cliqué sur Télécharger bouton en bas à droite.
Ensuite, lancez-le avec dpkg:
Sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
Lors de la configuration de l'installation, choisissez la version de MySQL que vous souhaitez installer. L'option par défaut est 8.0 mais je l'ai changée en 5.7. Cliquez sur OK pour quitter. Après cela, vous avez un nouveau référentiel MySQL dans vos sources de logiciels.
Mettez à jour votre repo:
Sudo apt update
Enfin, installez MySQL:
Sudo apt install mysql-server
Et maintenant, on m'a demandé de fournir mot de passe root ! J'espère que cela aide pour les autres avec cette même expérience.
Mysql génère un mot de passe temporaire par défaut lorsqu’il est installé. Pour utiliser mysql en premier lieu, vous devez obtenir ce mot de passe à partir du fichier journal présent dans /var/log/mysqld.log. Alors suivez le processus suivant -
grep 'mot de passe temporaire' /var/log/mysqld.log
mysql_secure_installation - Ceci est nécessaire pour changer le mot de passe de mysql et également pour apporter certaines modifications, telles que la suppression de bases de données temporaires, l'autorisation ou l'interdiction de l'accès distant à l'utilisateur root, la suppression d'utilisateurs anonymes, etc.
Après de nombreuses tentatives, je peux réinitialiser le mot de passe par défaut à l’aide des commandes suivantes (Ubuntu et dérivés):
Sudo -i
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot
use mysql;
update user set authentication_string=password('YOURPASSWORD') where user='root';
update user set plugin="mysql_native_password" where User='root';
flush privileges;
quit;
Sudo /etc/init.d/mysql stop
Sudo /etc/init.d/mysql start
Parfois, même après avoir tapé dans le terminal
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
J'ai eu l'erreur que le mysqld n'existe pas. Alors, quittez et tapez les mêmes commandes à nouveau.
Et la dernière commande
Sudo /etc/init.d/mysql start
Parfois ne fonctionne pas. Seulement après le redémarrage de l'ordinateur.
Il semble que les choses ont été conçues pour éviter que les développeurs se voient comme utilisateur root, une meilleure solution serait:
Sudo mysql -u root
Créez ensuite un utilisateur normal, définissez un mot de passe, puis utilisez-le pour travailler.
create user 'user'@'localhost' identified by 'user1234';
grant all on your_database.* to 'user'@'localhost';
select Host, user from mysql.user;
Ensuite, essayez d'accéder à:
mysql -u user -p
Boom!
Je connaissais le même problème et la seule chose que j'ai pu faire pour que cela fonctionne est de suivre cette voie:
drop user admin@localhost; flush privileges; create user admin@localhost identified by 'admins_password'
</ code>
Cela m'a permis de recréer mon username et entrez un mot de passe pour le nom d'utilisateur
Dans mon cas, le répertoire de données a été automatiquement initialisé avec l'option --initialize-insecure
. Donc, /var/log/mysql/error.log
ne contient pas de mot de passe temporaire, mais:
[Avertissement] root @ localhost est créé avec un mot de passe vide! Veuillez envisager de désactiver l'option --initialize-insecure.
Ce qui a fonctionné était:
Shell> mysql -u root --skip-password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Détails: Manuel de référence MySQL 5.7> 2.10.4 Sécuriser le compte MySQL initial
Aucune de ces réponses n'a fonctionné pour moi sur Ubuntu Server 18.04.1 et MySQL 5.7.23. J'ai passé beaucoup de temps à essayer de définir le mot de passe et le plug-in auth manuellement, à trouver le mot de passe dans les journaux (ce n'est pas là), etc.
La solution est en réalité super facile:
Sudo mysql_secure_installation
C'est vraiment important de faire cela avec Sudo
. Si vous essayez sans élévation, le mot de passe root vous sera demandé, ce que vous n'avez évidemment pas.