GNU/Linux >> Tutoriels Linux >  >> Linux

Comment alimenter les requêtes mysql à partir de bash

La raison pour laquelle votre tentative n'a pas fonctionné est que le < attend un nom de fichier et vous lui avez fourni une chaîne. Vous auriez à faire quelque chose comme

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

la suggestion de ken de

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

peut fonctionner, mais si vous essayez d'utiliser des variables bash dans votre requête, vous pouvez tomber sous le coup de l'expansion des paramètres. par exemple

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

peut ne pas faire ce que vous attendez.Une option est d'utiliser

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

qui fonctionne si la chaîne de requête contient des guillemets appropriés. Une autre option est le document "ici" comme suggéré par dogbane.


Essayez d'utiliser un document ici comme celui-ci :

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

Vous pouvez également placer toutes vos commandes dans un fichier texte et l'exécuter :

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

Essayez comme ceci :

echo "select 1" | mysql

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

Le traitement par lots et le silence sont pratiques si vous prévoyez de canaliser la sortie


Linux
  1. Comment exécuter des requêtes MySQL/MariaDB directement à partir de la ligne de commande Linux

  2. Comment effacer une commande spécifique de l'historique Bash sous Linux

  3. Comment créer un tableau d'éléments uniques à partir d'une chaîne/tableau dans Bash ?

  4. Comment savoir si je suis dans une session Tmux à partir d'un script bash ?

  5. Comment copier une table d'une base de données mysql vers une autre base de données mysql

Comment supprimer un utilisateur d'une base de données MySQL dans cPanel

Comment sauvegarder une seule base de données MySQL à partir de la ligne de commande

Comment sauvegarder toutes les bases de données MySQL à partir de la ligne de commande

Comment restaurer la base de données MySQL à partir de phpMyAdmin ?

Comment changer le mot de passe de l'utilisateur MySQL depuis cPanel ?

Comment télécharger la sauvegarde de la base de données MySQL depuis cPanel ?