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