Řešení 1:
Jak pro MySQL, tak pro PostgreSQL můžete zadat svého uživatele a heslo v místním konfiguračním souboru. .my.cnf pro MySQL a .pgpass pro PostgreSQL. Tyto soubory by měly být ve vašem domovském adresáři (tj. ~/.my.cnf).
.my.cnf:
[mysql]
user=user
password=password
.pgpass:
host:port:database:user:password
Zde můžete zadat zástupný znak, kterým nahradíte libovolné pole za *******.
PS:NIKDY NEZADÁVEJTE HESLO NA PŘÍKAZOVÉ ŘÁDCE! To lze perfektně vidět pomocí ps pokud váš systém není nakonfigurován tak, aby nezobrazoval procesy, které patří jiným uživatelům.
@thinice:Pokud chcete tyto soubory vytvářet opravdu bezpečně, měli byste to udělat:
umask 077
touch .my.new.config
umask 022 # or whatever was your default
Tímto způsobem by byl soubor vytvořen se zabezpečenými oprávněními od začátku a žádný odposlouchávač by neměl šanci vyzradit vaše heslo.
PostgreSQL stejně odmítne použít soubor s oprávněními vyššími než 0600.
Řešení 2:
mysql_config_editor set --login-path=storedPasswordKey --host=localhost --user=root --password
Jak mohu spustit příkazový řádek se zabezpečeným heslem? Použijte konfigurační editor!!!
Od mysql 5.6.6 můžete uložit heslo do konfiguračního souboru a poté spouštět příkazy cli, jako je tento....
mysql --login-path=storedPasswordKey ....
--login-path nahrazuje proměnné... hostitel, uživatel A heslo. vynikající správně!
Řešení 3:
Neuvádějte kolem hesla uvozovky, protože pokud tak učiníte, jsou uvozovky považovány za součást hesla.
Řešení 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
To bude stačitDíky