GNU/Linux >> Linux Esercitazione >  >> Linux

Come alimentare le query mysql da bash

Il motivo per cui il tuo tentativo non ha funzionato è perché < si aspetta un nome file e gli hai fornito una stringa. Dovresti fare qualcosa come

echo "YOURQUERYSTRINGHERE">tmpfile
mysql --host=localhost --user=user --password=password dbname <tmpfile

il suggerimento di ken di

 mysql  --host=localhost --user=user --password=password -e "QUERY" dbname

può funzionare, ma se provi a utilizzare le variabili bash nella tua query puoi cadere nell'espansione dei parametri. es

QUERY="select * from $MYTABLE WHERE name=\"[email protected]\";"
mysql --host=localhost --user=user --password=password -e "$QUERY" mydbname

potrebbe non fare ciò che ti aspetti. Un'opzione è use

echo "$QUERY"|mysql --host=localhost --user=user --password=password mydbname

che funziona se la stringa di query contiene virgolette appropriate. Un'altra opzione è il documento "here" come suggerito da dogbane.


Prova a utilizzare un documento here come questo:

mysql --host=localhost --user=user --password=password << END

CREATE USER 'testuser'@'localhost' IDENTIFIED BY  'jakdJxct8W';
CREATE DATABASE IF NOT EXISTS 'testuser_dev' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON  'testuser_dev' . * TO  'testuser'@'localhost';
CREATE DATABASE IF NOT EXISTS 'testuser_qa' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON  'testuser_qa' . * TO  'testuser'@'localhost';

END

In alternativa, inserisci tutti i tuoi comandi in un file di testo ed eseguilo:

mysql --host=localhost --user=user --password=password < commands.sql

Prova così:

echo "select 1" | mysql

mysql --batch --silent -e 'SHOW TABLES';

Batch e silent sono utili se hai intenzione di reindirizzare l'output


Linux
  1. Come cancellare un comando specifico dalla cronologia di Bash in Linux

  2. Come creare una matrice di elementi unici da una stringa/array in Bash?

  3. Come copiare una tabella da un database mysql a un altro database mysql

  4. Come posso ottenere valori univoci da un array in Bash?

  5. Come disabilitare MySQL su Linux dall'avvio all'avvio o all'avvio?

Come rimuovere un utente da un database MySQL in cPanel

Come eseguire il backup di un singolo database MySQL dalla riga di comando

Come eseguire il backup di tutti i database MySQL dalla riga di comando

Come ripristinare il database MySQL da phpMyAdmin?

Come modificare la password utente di MySQL da cPanel?

Come scaricare il backup del database MySQL da cPanel?