MySQL
Hinweis:
Datenbanken in der HS Kern-Dokumentation:https://doc.hostsharing.net/hsusers/administration/datenbanken/index.html
sowie unter
https://doc.hostsharing.net/hsusers/anleitung/datenbank.html
Datenbank anlegen
erfolgt mit hsadmin siehe Datenbanken.
Datenbanknamen in MySQL beginnen bei Hostsharing immer mit dem Namen des Pakets, gefolgt von einem Unterstrich; danach folgt der frei wählbare eigentliche Name.
Beispiele gültiger Datenbanken für ein Paket xyz00:
- xyz00_otto
- xyz00_anna
- xyz00_db_fuer_hans
Administration
Die Administration einer Mysql-Datenbank (das Verwalten von Tabellen) erfolgt üblicherweise mit PhpMyAdmin
Der MySQL-Monitor
Mit einem Datenbanknutzer kann auch direkt im MySQL-Monitor gearbeitet werden, in dem die MySQL-Befehle eingegeben und verarbeitet werden. Der Monitor wird auf der Shell mit dem Befehl mysql aufgerufen. Es ist hier übrigens egal, ob wir als Paketadmin oder als Domainadmin eingeloggt sind, denn MySQL-User und UNIX-Accounts haben keinen Zusammenhang. Wir können mit jedem UNIX-Account, also auch als normaler Domainadmin auf jeden Datenbank-Account zugreifen – auch auf den Paketadmin-Account.
Da wir uns mit Benutzernamen und Passwort anmelden müssen, verwenden wir die Optionen -u (und danach den Benutzernamen) und -p. Das Passwort geben wir nicht in dieser Kommandozeile an, denn sonst ist es für andere User sichtbar. Wenn wir nach -p nichts angeben, werden wir von mysql danach gefragt und geben es dann an.
xyz00@hopi$ mysql -u xyz00_otto -p Enter password: password Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1257230 to server version: 3.23.49-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Nun können wir MySQL-Befehle eingeben. Zu beachten ist, dass man nach einem Kommando mit einem ; abschließen muss. Es gibt einige Ausnahmen, wo man das nicht braucht, z.B. beim Befehl QUIT, mit dem man den Monitor wieder verlässt.
Rechte an der Datenbank vergeben
Optional kann man weitere Datenbank-User anlegen, denen man nur dedizierte Rechte für die neue Datenbank erteilt. Dafür werden die normalen SQL-Befehle verwendet. Der Paket-Datenbankadmin muss sich mit Hilfe des Kommandozeilen-Werkzeugs mysql mit der Datenbank verbinden und dann die Rechte wie gewünscht vergeben:
xyz00@host:~$ mysql -u xyz00 -p Enter password: Welcome to the MySQL ... mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER ON xyz00_beispiel.* TO xyz00_beispiel; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye
Mit dem obigen GRANT-Befehl werden dem Benutzer alle Rechte an der Datenbank gegeben. In der Regel wird dies nicht notwendig sein; es ist sicherer, dem Benutzer nur die tatsächlich benötigten Rechte einzuräumen. Eine Auflistung der verschiedenen Rechte befindet sich in der MySQL-Dokumentation zum GRANT-Befehl.
Datenbank testen
Jetzt sollte der Benutzer die Datenbank nutzen können:
xyz00@host:~$ mysql -D xyz00_beispiel -u xyz00_beispiel -p Enter password: Welcome to the MySQL ...
Ausprobieren, kann man dies Beispielsweise durch das Anlegen und Löschen einer Tabelle:
mysql> create table test(id INT); Query OK, 0 rows affected (0.86 sec) mysql> show tables; +--------------------------+ | Tables_in_xyz00_beispiel | +--------------------------+ | test | +--------------------------+ 1 row in set mysql> drop table test; Query ok, 0 rows affected (0.00 sec) mysql> exit Bye
Das Anlegen und Löschen einer Tabelle funktioniert dabei natürlich nur, wenn dem Benutzer auch tatsächlich die dafür nötigen Rechte eingeräumt wurden. In der Regel wird ein Benutzerkonto, das für die Verwendung in einer Web-Anwendung eingerichtet wurde, diese Rechte nicht benötigen. Es ist dann sicherer, diese Rechte auch nicht zu vergeben.
Rechte vergeben
Allen Benutzern, außer dem Datenbank-Administrator, müssen wir noch Rechte geben, sonst können sie gar nichts machen. Das erledigt man mit dem Befehl GRANT.
mysql>GRANT SELECT, INSERT, DELETE, UPDATE ON xyz00_meinedatenbank.* TO xyz00_otto;
Hinter der Datenbank verwenden wir .*, um alle Tabellen der Datenbank zu inkludieren.
Mit GRANT ALL kann man einem User auch alle Kommandorechte zuweisen.
Alle Aufgaben können wir jetzt in Zukunft vom User xyz00_otto erledigen lassen.
Import eines Mysql-Dump in eine leere Datenbank
Wurde eine Mysql Datenbank in eine Datei exportiert (als eine Folge von SQL-Befehle in einer Textdatei, hier mit dem Namen backup_xyz.sql) , kann sie mit folgendem Befehl auf der Shell in die Datenbank xyz00_beispiel des Benutzers xyz00_beispiel importiert werden:
mysql --user xyz00_beispiel -p xyz00_beispiel < backup_xyz00_beispiel.sql
Export einer Mysql Datenbank in eine Textdatei
Um eine Datenbank auf der Shell in eine Textdatei zu exportieren, dient dieser Befehl:
mysqldump --user xyz00_beispiel -p xyz00_beispiel > backup_xyz00_beispiel.sql
Verschiedenes
- Web-Frontend: phpMyAdmin ist unter https://phpmyadmin.hostsharing.net/current erreichbar.
- Online-Dokumentation: Die Online-Doku zu MySQL gibt es unter http://dev.mysql.com/doc/. Auf dieser Site gibt es auch mehrere Fassungen der kompletten Doku zum Downloaden.