GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man MySQL-Abfragen von Bash füttert

Der Grund, warum Ihr Versuch nicht funktioniert hat, war der < erwartet einen Dateinamen und Sie füttern ihn mit einer Zeichenkette. Sie müssten so etwas tun wie

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

kens Vorschlag von

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

kann funktionieren, aber wenn Sie versuchen, Bash-Variablen in Ihrer Abfrage zu verwenden, können Sie mit der Parametererweiterung in Konflikt geraten. zB

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

möglicherweise nicht das, was Sie erwarten. Eine Option ist use

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

was funktioniert, wenn die Abfragezeichenfolge entsprechende Anführungszeichen enthält. Eine weitere Option ist das "hier"-Dokument, wie von dogbane vorgeschlagen.


Versuchen Sie, ein Here-Dokument wie dieses zu verwenden:

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

Alternativ platzieren Sie alle Ihre Befehle in einer Textdatei und führen Sie sie aus:

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

Versuchen Sie es folgendermaßen:

echo "select 1" | mysql

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

Batch und Silent sind praktisch, wenn Sie die Ausgabe leiten möchten


Linux
  1. So löschen Sie einen bestimmten Befehl aus dem Bash-Verlauf in Linux

  2. Wie erstelle ich ein Array eindeutiger Elemente aus einer Zeichenfolge/einem Array in Bash?

  3. Wie können Sie Duplikate aus dem Bash-Verlauf entfernen?

  4. Wie bekomme ich eine Netzmaske von Bash?

  5. Wie deaktiviere ich MySQL unter Linux vom Starten beim Booten oder Statup?

So entfernen Sie einen Benutzer aus einer MySQL-Datenbank in cPanel

So sichern Sie eine einzelne MySQL-Datenbank über die Befehlszeile

So sichern Sie alle MySQL-Datenbanken über die Befehlszeile

Wie stellt man die MySQL-Datenbank von phpMyAdmin wieder her?

Wie ändere ich das MySQL-Benutzerpasswort in cPanel?

Wie lade ich ein MySQL-Datenbank-Backup von cPanel herunter?