Mysql
 sql >> Database >  >> RDS >> Mysql

Come accedere automaticamente a MySQL da uno script di shell?

Modi alternativi per scrivere queste opzioni.

Puoi scrivere

mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"

per passare stringhe vuote come argomenti separati. Il tuo commento qui sotto indica che il cliente chiederà comunque una password. Probabilmente interpreta l'argomento vuoto come nome del database e non come password. Quindi potresti provare invece quanto segue:

mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"

File .my.cnf

Ma anche se c'è un modo, ti suggerirei comunque di usare un ~/.my.cnf file invece. Gli argomenti sulla riga di comando sono probabilmente inclusi in un elenco di processi generato da ps -A -ocmd , in modo che altri utenti possano vederli. Il .my.cnf il file, d'altra parte, può (e dovrebbe) essere reso leggibile solo da te (usando chmod 0600 ~/.my.cnf ), e verrà utilizzato automaticamente. Fai in modo che quel file includa le seguenti righe:

[client]
user=root
password=

Quindi un semplice mysql -e "SHOW DATABASES" sarà sufficiente, poiché il client otterrà le sue credenziali da quel file.

Vedere 6.1.2.1. Linee guida per l'utente finale per la sicurezza delle password per i vari modi in cui è possibile fornire una password e i rispettivi vantaggi e svantaggi. Vedere 4.2.3.3. Utilizzo dei file delle opzioni per informazioni generali su questo .my.cnf file