Sicherlich wolltest du schon immer einmal wissen, wie man per Bashscript auf eine MySQL Datenbank zugreift und bestimmte Befehle absetzt.
Hier sollten alle benötigten Befehle benannt sein:
Abschnitt 1: Header
#!/bin/bash # enable Debugmode set -x # Variablendeklaration user="kubiii" password="kubi123" dbname="meine_db" host="127.0.0.1" exe="SELECT * FROM wp_users"
Mit Hilfe der Befehle mysql und mysqldump kannst du verschiedene Aktionen durchführen
Abschnitt 2.1: Ausführen von Befehlen
mysql -u ${user} -p${password} -D ${dbname} --execute ${exe}
Abschnitt 2.2: Abziehen einer DB (Dump erstellen)
mysqldump -u ${user} -p${password} ${dbname} > db_dump.sql
Abschnitt 2.3: Abziehen bestimmter Tabellen (Dump erstellen)
mysqldump -u ${user} -p${password} --database {dbname} --tables [TABLE1] [TABLE2] > db_table_dump.sql
[TABLE1] & [TABLE2] sind durch die entsprechenden Tabellenbezeichnung zu ersetzen
Abschnitt 2.4.1: Einspielen des Dumps
mysql -u ${user} -p${password} -h ${host} --default-character-set=[ZEICHENSATZ] ${dbname} < db_dump.sql
[ZEICHENSATZ] ist durch einen Zeichensatz zu befüllen (z.B. „utf8“).
Möchtest du keine Zeichensatz mitgeben, so kannst du den Part „–default-character-set=[ZEICHENSATZ]“ komplett weglassen.
Abschnitt 2.4.2: Einspielen des Dumps
mysql -u ${user} -p${password} -h ${host} mysql > use ${dbname} mysql > source db_dump.sql
Manchmal kann es dazu kommen, dass es beim Dateiimport zu Problemen mit dem Foreignkey kommt.
Sollte dies der Fall sein, so ändere in der Dump-Datei die erste Zeile zu:
SET foreign_key_checks = 0;
Dies sollte den Fehler beheben.
Ein vollständiges Script könnte dann wie folgt aussehen:
#!/bin/bash # enable Debugmode set -x # Variablendeklaration user="kubiii" password="kubi123" dbname_alt="meine_db" dbname_neu="deine_db" host="127.0.0.1" # Abziehen der aktuellen Datenbanktabellen mysqldump -u ${user} -p${password} ${dbname1} > db1_dump.sql # Einspielen des Dumps mysql -u ${user} -p${password} -h ${host} --default-character-set="utf8" ${dbname2} < db1_dump.sql # Auflistung aller Datenbanktabellen aus der neuen Datenbank mysql -u ${user} -p${password} -D ${dbname1} --execute "SHOW TABLES" # disable Debugmode set +x
Das Script gibt es selbstverständlich auch als DOWNLOAD.