Activer l'accès sans mot de passe à MySQL


15

Comment puis-je supprimer mon mot de passe pour MySQL? Je ne veux pas avoir de mot de passe pour me connecter à la base de données. Mon serveur exécute Ubuntu.


Juste comme une question d'intérêt, pourquoi ne voulez-vous pas un mot de passe?
John Gardeniers

Par exemple, je rencontre des erreurs lorsque j'exécute "dpkg-reconfigure phpmyadmin". Il s'arrête avec l'erreur 1045 avec accès refusé root @ localhost "mot de passe: non" se terminant.
Lacek

Réponses:


29

Personnellement, je pense plutôt qu'il vaut mieux définir un mot de passe et l'enregistrer dans /root/.my.cnf:

Premier:

mysqladmin -u root password 'asdfghjkl'

Modifiez ensuite le fichier .my.cnf de root:

[client]
password = asdfghjkl

Assurez-vous de chmod 0600 .my.cnf.

Vous avez maintenant un mot de passe mais vous n'êtes plus invité à le saisir. Mon installation par défaut du serveur MySQL est un mot de passe unique totalement aléatoire pour chaque serveur MySQL, enregistré dans le fichier .my.cnf comme celui-ci.


1
Je suis fortement d'accord avec la configuration de votre environnement pour vous authentifier automatiquement par rapport à la suppression du mot de passe.
Zoredache

2
Vous pouvez avoir besoin de guillemets autour de ce mot de passe dans le .my.cnf. Cela n'a pas fonctionné pour moi sans.
user67641

1
@ user67641: Cela peut dépendre de la version et du contenu de votre mot de passe ... Les miennes sont toutes de longues chaînes aléatoires alphanumériques (pas de caractères spéciaux) et n'ont pas besoin de guillemets.
freiheit

2
Si vous devez créer /root/.my.cnf, cela vaut la peine de définir explicitement des autorisations 0600 dessus pour être sûr qu'aucun autre utilisateur ne peut espionner. La plupart du temps, les utilisateurs normaux ne peuvent pas descendre dans / root, mais la paranoïa supplémentaire est presque toujours garantie.
Dale Anderson

Manquant mv ./+%Y%m%d. $ Db.sql $ OUTPUT` entre mysqldump et gzip
Siddharth

9

Si vous avez un mot de passe défini pour MySQL, suivez les instructions à Récupérer le mot de passe racine MySQL , puis définissez votre mot de passe sur null:

Pour 5.7.6 et versions ultérieures

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

Pour 5.7.5 et versions antérieures

update user set password=PASSWORD("") where User='root';

* nécessite un redémarrage de la base de données (voir les instructions sur le lien) pour que cela prenne effet.

sudo service mysql restart

dans ce cas, n'oubliez pas de "vider les privilèges";
Marco Ramos

@meyosef - veuillez cocher une réponse comme ayant répondu si elle a résolu votre problème (cliquez sur la coche verte sous le nombre de votes).
jneves

Je pensais que je pouvais utiliser un mot de passe vide uniquement pour le socket Unix et non le bouclage, mais ce n'est pas possible. Le unix_socketplugin fait une chose légèrement différente.
bassin

9

Oui, moins de mots de passe peut être une bonne chose. Mais ne vous contentez pas d'ouvrir la base de données pour tout le monde.

via unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Cela vous donne un accès mysql sans mot de passe pour un utilisateur root connecté localement. Btw. c'est la valeur par défaut dans les dernières versions d'ubuntu / debian.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Diapositives explicatives: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .


2
Bienvenue chez SF! Belle première réponse: claire, un bon résumé, un lien pour une exploration plus approfondie, et cela ajoute quelque chose au corpus de réponses existant. Je suis ravi d'être votre premier vote positif, et j'espère que vous resterez pour écrire plus de réponses comme celle-ci.
MadHatter

Les diapositives sont correctes, mais c'est la documentation réelle: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

5

Vous pouvez également faire:

grant all privileges on *.* to 'root'@'localhost' identified by '';

1

Je suis sûr que par défaut, il n'y a pas de mot de passe si vous êtes l'utilisateur administrateur et que vous y accédez localement. Trouvez-vous quelque chose de différent que ça?

Est-ce que ça marche?

#> mysqladmin -u root password ''
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.