GNU/Linux >> Tutoriels Linux >  >> Linux

Connectez-vous à MySQL via la ligne de commande sans utiliser de mot de passe root ?

Solution 1 :

Pour MySQL et PostgreSQL, vous pouvez spécifier votre utilisateur et votre mot de passe dans le fichier de configuration local. .my.cnf pour MySQL et .pgpass pour PostgreSQL. Ces fichiers doivent se trouver dans votre répertoire personnel (c'est-à-dire ~/.my.cnf).

.mon.cnf :

[mysql]
user=user
password=password

.pgpass :

host:port:database:user:password

Vous pouvez avoir une entrée générique ici, en remplaçant n'importe quel champ par *******.

PS :NE SPÉCIFIEZ JAMAIS DE MOT DE PASSE SUR LA LIGNE DE COMMANDE ! Cela peut être parfaitement visible avec ps si votre système n'est pas configuré pour ne pas afficher les processus appartenant à d'autres utilisateurs.

@thinice :Si vous souhaitez créer ces fichiers de manière vraiment sécurisée, vous devez :

umask 077
touch .my.new.config
umask 022 # or whatever was your default

De cette façon, le fichier serait créé avec des autorisations sécurisées dès le départ et aucun intrus n'aurait la chance de récupérer votre mot de passe.

PostgreSQL refusera de toute façon d'utiliser le fichier avec des permissions supérieures à 0600.

Solution 2 :

mysql_config_editor set --login-path=storedPasswordKey --host=localhost --user=root --password

Comment puis-je exécuter une ligne de commande avec un mot de passe sécurisé ??Utilisez l'éditeur de configuration !!!

Depuis mysql 5.6.6, vous pouvez stocker le mot de passe dans un fichier de configuration, puis exécuter des commandes cli comme celle-ci...

mysql --login-path=storedPasswordKey ....

--login-path remplace les variables... host, user AND password.excellent right !

Solution 3 :

Ne mettez pas de guillemets autour du mot de passe, car si vous le faites, les guillemets sont considérés comme faisant partie du mot de passe.

Solution 4 :

MYSQL_USER="root"
MYSQL_PASSWORD="PASSWORD"
DBNAME="DB_NAME"

mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE $DBNAME;" 2> /tmp/error1

STATUS=$? 
if [ $STATUS -eq 0 ];
then 
    echo -e "Database '$DBNAME' is created"
elif (grep -i "^ERROR 1007" /tmp/error1 > /dev/null);
then
    echo -e "Database '$DBNAME' already exists"
else
    echo -e "Failed to create database '$DBNAME'"
fi

rm -r /tmp/error1 

Cela fera l'affaireMerci


Linux
  1. Comment sauvegarder et restaurer la base de données MySQL à l'aide de la ligne de commande

  2. Changer le mot de passe root par Sudo, sans Su ?

  3. Comment redémarrer Linux en utilisant la ligne de commande

  4. Réinitialiser un mot de passe root MySQL

  5. Comment changer le mot de passe root mysql

Comment se connecter à MySQL à partir de la ligne de commande Windows

Forcer les utilisateurs à utiliser le mot de passe racine au lieu de leur propre mot de passe lors de l'utilisation de la commande Sudo

Comment changer le mot de passe sudo via la ligne de commande sur CentOS 8

Comment réinitialiser le mot de passe root MySQL

Comment se connecter à MySQL en utilisant PHP

Comment réinitialiser le mot de passe root MySQL 8.0 sur Centos 7.x ?