MySQL Zugriff

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}

Zwischen dem Parameter und dem Wert von „-p“ darf KEIN Leerzeichen stehen!

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.