datenbank
Ich möchte in diesem Guide zeigen wie einfach eine MySQL Datenbank von einem Server auf einen den anderen Server übertragen werden kann oder dupliziert wird. Es gibt natürlich mehrere Wege bzw. Programme von Drittanbietern, die einen Transfer (Sicherung) vereinfachen oder auch grafisch darstellen. Ich erkläre hier aber bewusst den Weg auf der Linux Konsole.
MySQL Datenbank sichern
Die MySQL Datenbank, mit dem Namen datenbank1, wird mit dem Befehl “mysqldump” gesichert. Es wird dabei ein Abbild (dump) von datenbank1 nach /usr/src/datenbank1.sql geschrieben. Das MySQL Root Passwort wird nach der Eingabe abgefragt.
mysqldump -u root -p datenbank1 > /usr/src/datenbank1.sql
Datenbank Dump auf den neuen Server transferieren
Dieser Schritt kann übersprungen werden, wenn die Datenbank auf dem gleichen Datenbankserver kopiert werden soll.
Da die Datenbank nun in eine .sql Datei exportiert wurde kann sie auf den neuen Server (am Beispiel IP: 192.168.1.155) übertragen werden. Eine einfache Möglichkeit bietet der Befehl “scp”. Das Programm ist auf allen gängigen Linux Distributionen vorinstalliert und sehr einfach zu bedienen. (Ihr könnt die Datei auch manuell oder mit rsync transferieren)
scp /usr/src/datenbank1.sql root@192.168.1.155:/usr/src/
Nach der Passworteingabe wird die Datei datenbank1.sql auf den neuen Server übertragen.
Datenbank am neuen Server erstellen
Auf dem Zielserver müssen wir nun eine neue MySQL Datenbank erstellen, in die der MySQL Dump vom alten Server eingespielt wird. Es können natürlich spezielle Berechtigungen gesetzt werden, das würde aber diesen Beitrag sprengen. Daher wird der Datenbankuser mit grant all privileges auf datenbank1 angelegt und dabei auf den localhost begrenzt.
mysql -u root -p
Neue MySQL Datenbank (datenbank1) erstellen:
create database datenbank1;
MySQL Datenbankbenutzer (dein-user) mit dem Passwort (dein_passwort) anlegen
grant all privileges on datenbank1.* to 'dein_user'@'localhost' identified by 'dein_passwort' with grant option;
MySQL Datenbank wiederherstellen
Der MySQL Datenbank dump (datenbank1.sql) wird nun am neuen Server in die zuvor erstelle neue Datenbank (datenbank1) wiederhergestellt. Das MySQL root Passwort wird nach der Eingabe abgefragt.
mysql -u root -p datenbank1 < /usr/src/datenbank1.sql
Gesamten MySQL Datenbankserver mit mehreren Datenbanken transferieren
Wer einen größeren MySQL Datenbankserver mit vielen Datenbanken transferieren möchte, der sollte sich am alten Server die Datenbank “mysql” mit dumpen, da dort die User Informationen, Rechte und Passwörter gespeichert sind. So ist es nicht notwendig, neben den Datenbanken auch noch die User und Passwörter anzulegen.
Kurze Zusammenfassung:
mysqldump -u root -p mysql > /usr/src/mysql.sql
scp /usr/src/mysql.sql root@192.168.1.155:/usr/src/
mysql -u root -p mysql < /usr/src/mysql.sql
Nach dem Einspielen sollte unbedingt noch ein flush privileges auf der Datenbank durchgeführt werden:
mysqladmin -u root -p flush-privileges
Tags: datenbank, db, dump, mysql, mysql datenbank, mysqldump, scp, sql, transfer
Das Passwort eines MySQL Users oder von Root in der Kommandozeile zu ändern ist eigentlich ein ziemlich simpler Vorgang. Da ich mir den Befehl aber selber nie merken kann schreibe ich ihn hier auf:
MySQL User Passwort ändern
Variante 1: via mysqladmin
Folgender Befehl wird im Linux Terminal abgesetzt um das Passwort eines Users zu ändern (dein-neues-passwort und dein-user durch ein entsprechendes Passwort bzw. Usernamen ersetzten)
mysqladmin -u'dein-user' -p'dein-altes-passwort' password 'dein-neues-passwort'
Variante 2: via MySQL Befehl in der Konsole
Mit folgenden Befehl auf der MySQL Serverkonsole anmelden
mysql -u root -p
Die Datenbank mysql auswählen
use mysql;
Passwort mit folgendem Befehl ändern (dein-neues-passwort und dein-user durch ein entsprechendes Passwort bzw. Usernamen ersetzten)
update user set password=PASSWORD('dein-neues-passwort') where User='dein-user';
Anschließend ein Flush Privileges durchführen und die MySQL Konsole beenden
flush privileges;
quit
MySQL Root Passwort ändern
Initiales MySQL Root Passwort festlegen (erstmaliges definieren vom Passwort)
Wenn noch kein MySQL root Passwort vergeben ist, kann es mit folgendem Befehl vergeben werden:
mysqladmin -u root password 'dein-neues-passwort'
MySQL Root Passwort ändern – Variante 1: via mysqladmin
Folgender Befehl wird im Linux Terminal abgesetzt um das Passwort des Root Users zu ändern (dein-neues-passwort durch ein entsprechendes Passwort ersetzten)
mysqladmin -u root -p'dein-altes-passwort' password 'dein-neues-passwort'
MySQL Root Passwort ändern - Variante 2: via MySQL Befehl in der Konsole
Mit folgenden Befehl auf der MySQL Serverkonsole anmelden
mysql -u root -p
Die Datenbank mysql auswählen
use mysql;
Passwort mit folgendem Befehl ändern (dein-neues-passwort durch ein entsprechendes Passwort ersetzten)
update user set password=PASSWORD('dein-neues-passwort') where User='root';
Anschließend ein Flush Privileges durchführen und die MySQL Konsole beenden
flush privileges;
quit
Tags: database, datenbank, db, Linux, mysql, mysqladmin, password, passwort, root, user
Sequel Pro ist ein OpenSource MySQL Management Tool für den MAC, welches einige nützliche Extras, wie das SSH-Tunneling besitzt.
Sequel Pro ist ein sehr hilfreiches Tool für jeden Webentwickler und (Datenbank)Administratoren, die viel mit MySQL Datenbanken zu tun haben. Im Bereich von MAC OS X gibt es leider sehr wenig Tools, welche diese Funktionen bieten und noch dazu OpenSource sind. Aufgebaut ist Sequel Pro auf das bekannte Tool CacoaMySQL, welches sein einiger Zeit nicht mehr weiterentwickelt wurde. Die Funktionen wurden jedoch um einiges erweitert und die Oberfläche grundlegend überarbeitet.

MySQL Datenbank Zugriff via SSH Tunnel
Das Besondere an Sequel Pro ist die Möglichkeit auf MySQL Datenbanken via SSH Tunnel zuzugreifen. Es muss somit von extern keine Verbindung mehr zugelassen werden, sondern man kann bequem per SSH auf die lokale Datenbank eines Servers zugreifen. Die Verbindungen können natürlich auch als Favoriten abgespeichert werden, damit beim nächsten mal der Zugriff schneller stattfindet.

Download
Downloaden könnt ihr die Software Hier
Tags: app, database, datenbank, mysql, open, open source, sequel pro, software, SSH, tool, tunneling
Ein weiteres MySQL Problem, welches mir schon des öfteren über den Weg gelaufen ist: “ERROR 1045: Access denied for user ‘debian-sys-maint’@'localhost’” Ich will Euch hier kurz das Problem + Lösung erläutern
Das Problem
Debian hat einen eigenen Account (debian-sys-maint) für das Starten/Stoppen und Status checken von MySQL. Diese Userinformationen + Passwort werden in der Datei /etc/mysql/debian.cnf abgelegt. Nach einer Neuinstallation von MySQL, oder der Migrierung von einer Datenbank inklusive Usertabellen auf ein neues System stimmt das Passwort für den User nicht mehr überein:
/etc/init.d/mysql start
Starting MySQL database server: mysqld ..
Checking for corrupt, not cleanly closed and upgrade needing tables..
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
nvieking1:/# ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)
Die Lösung
Die Datei /etc/mysql/debian.cnf öffnen und das Passwort für den User debian-sys-maint auslesen und kopieren.
Mit dem root User auf die Datenbank verbinden:
mysql -u root -p
Das Passwort des Users debian-sys-maint mit folgendem Befehl ändern (<<passwort>> ist mit dem ausgelesenen Passwort zu ersetzen):
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘debian-sys-maint’@'localhost’ IDENTIFIED BY ‘<<passwort>>’ WITH GRANT OPTION;
Nun könnt ihr eure MySQL Datenbank wieder starten.
/etc/init.d/mysql start
Starting MySQL database server: mysqld ..
Checking for corrupt, not cleanly closed and upgrade needing tables..
Tags: database, datenbank, debian, debian-sys-maint, error, mysql
Ich hatte bereits mehrmals den Error: “Can’t open file (errno: 24) when using LOCK TABLES”, wenn ich bei größeren MySQL Datenbanken einen Dump machen wollte. Im Besonderen bei größeren WordPress/Buddypress Projekten. Ich will Euch hier kurz das Problem + Lösung vor Augen führen.
Das Problem:
Der Befehl “mysqldump” kann keine Datenbanken mit mehr als 330 Tabellen dumpen, und das stellt gerade bei Datenbanken mit sehr vielen Tabellen, wie WordPress/Buddypress ein großes Problem dar. Das Problem dabei ist, dass MySQL versucht, zu viele Dateien gleichzeitig offen zu halten.
mysqldump: Got error: 1016: Can't open file: './wordpress/wp_user_645_friends_activity_cached.frm'
(errno: 24) when using LOCK TABLES
Die Lösung:
Einfach den Dumpbefehl um folgendes Argument ergänzen: –lock-tables=false
Bei mir sieht dann der Befehl für ein gesamtes Datenbankbackup wie folgt aus:
mysqldump -u user -p password --opt --lock-tables=false datenbank1 > /usr/src/datenbank1.sql
Tags: backup, database, datenbank, dump, error, Linux, LOCK TABLES, mysql, mysqldump