Escapare una password usando la console mysqldump

Sto eseguendo un mysqldump tramite uno script bash e ho incontrato un problema con una password che contiene caratteri speciali.

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | gzip > /home/USERNAME/backups-mysql/BACKUP.gz 

Come faccio a sfuggire alla password?

  • Come permettere agli utenti di cambiare la password Linux dal browser web?
  • Come distriggersre il plugin ssl sul server MySQL 5.7?
  • Destinazioni multiple di log binarie di MySQL
  • phpMyAdmin che mostra il database è MyISAM ma le tabelle sono InnoDB
  • Amazon RDS a EC2 replicazione
  • Il server si blocca each 2 settimane di giorni sullo stesso tempo esatto
  • Come devo diagnosticare ERROR 1045 durante l'installazione di MySQL?
  • Il cluster di MariaDB Galera cade facilmente dalla sincronizzazione
  • MySQL abbassa il valore wait_timeout a un numero inferiore di connessioni aperte
  • non può tunnel SSH con PuTTY (windows vista) per connettersi a mysql nella casella Linux
  • mysqldump: La funzionalità 'INFORMATION_SCHEMA.SESSION_VARIABLES' è disabilitata
  • Buone prassi per il backup di MySQL su larga scala
  • 2 Solutions collect form web for “Escapare una password usando la console mysqldump”

    Ancora meglio, non mettere il nome utente o la password sulla row di command in cui può essere visto da chiunque possa fare ps -ef .

    Creare un file di controllo denominato qualcosa come /etc/mysqldump.cnf :

     [client] user=root password=YOUR_MYSQL_ROOT_PASSWORD 

    … where il client è letterale (non il nome del tuo server) e YOUR_MYSQL_ROOT_PASSWORD è … beh … la tua password di root mysql.

    Quindi invocare così:

     mysqldump --defaults-file=/etc/mysqldump.cnf DATABASE | gzip > /home/USERNAME/backups-mysql/BACKUP.gz 

    Personalmente la mia invocazione è più simile a questa:

     #!/bin/bash NOW=`perl -e 'print time;'` cd /opt/backup/mysql mkdir $NOW for i in `echo "show databases" | mysql -u root --password="MySqlRootPassword" | grep -v Database`; do mysqldump --defaults-file=/etc/mysqldump.cnf --databases $i --opt > $NOW/$i.dump one tar cfpz $NOW.tgz $NOW du -sh $NOW $NOW/* > $NOW.report rm -rf $NOW 

    Non ho mai capito come utilizzare un parametro di --defaults-file simile per mysql, tuttavia poiché questo command funziona abbastanza velocemente il rischio di esposizione è molto più basso … anche se veramente ciò dovrebbe essere risolto.

     mysqldump -hlocalhost -uUSERNAME -p'PA$$W0RD' DATABASE | gzip > /home/USERNAME/backups-mysql/BACKUP.gz 

    Funziona?

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.