Administration von MySQL

Utility mysqladmin

Einrichten des Super-Users

Wenn der Datenbankserver neu aufgesetzt wurde, soll das Passwort für den Administrator festgelegt werden:

$ mysqladmin -u username password password

Der Username für den Administrator heißt, wie in der UNIX-Welt üblich root, das Passwort password ist entsprechend sicher zu wählen.

$ mysqladmin -u root password password

Sobald ein Passwort für den User angegeben wurde, muß dem Aufruf von mysqladmin die Option -p (das Passwort wird dann interaktiv abgefragt) bzw. --password=password mitgegeben werden.

Unter Linux kann dann das Administrator-Paßwort mit:

$mysqladmin -u root -p password password

geändert werden. Dies ist unter Windows mit mysqladmin offenbar nicht möglich. Sehr wohl aber mit dem »DB Tools Manager, dafür ohne Abfrage des alten Passwortes, was als sehr bedenklich anzusehen ist!

Datenbanken anlegen/löschen

Der Administrator (bzw. andere berechtigte User können Datenbanken anlegen und löschen:

$ mysqladmin -p create dbname
$ mysqladmin -p drop dbname

Direkte Verbindung mit mysql

Mit dem kommandozeilenorientierten Utility «mysql» können spezielle MySQL-Server-Befehle oder SQL-Befehle abgesetzt werden.

Zugriffsrechte auf den Datenbankserver und seine Datenbanken werden in der speziellen Datenbank mysql abgelegt. Die dort angelegten Tabellen steuern den Zugriff auf den MySQL-Server (user), von ganzen Computern (host), auf einzelne Datenbanken (db), Tabellen (tables_priv) oder Spalten (columns_priv). Nach Änderungen in der Datenbank «mysql» muß der Datenbankserver neu geladen (mysqladmin -p -u root reload) werden, damit die Änderungen aktiviert werden.

Tabellenname Funktion
Tabelle 1
user Zugriff von Usern auf den Datenbankserver
db Zugriff von Usern auf Datenbanken
host Zugriff von Rechnern auf Datenbanken

Der genaue Aufbau und die Beschreibung der (Administrtaions-) Tabellen ist der Dokumentation zu entnehmen.

Userzugriff auf den Datenbankserver

User sollen von bestimmten Hosts Zugriff auf den Datenbankserver erhalten. Zusätzlich werden noch weitere Attribute für die Art des Zugriffs und zur Manipulation des Datenbankservers eingerichtet.

$ mysql -p -u root mysql
mysql> insert into user (host,user,password) values ('%', 'chris', password ('****'));

oder

$ mysql -p -u root
mysql> use mysql;
mysql> insert into user (host,user,password) values ('%', 'chris', password ('****'));

Zum Überprüfen der Einträge dient folgende SQL-Anweisung auf die Tabelle user der Datenbank mysql.

$ mysql -p -u root
mysql> use mysql;
mysql> select * from user;

Die Bestimmung der Zugriffsrechen in der Tabelle «user» wird in folgender Reihenfolge bestimmt:

  1. Hosts: Hostangaben ohne Wildcards werden vor Hostangaben mit Wildcards überprüft. Leere Hostfelder werden wie Wildcards behandelt.
  2. User: Userangaben ohne Wildcard werden vor Userangaben mit Wildcards überprüft.

Userzugriff auf Datenbanken

User sollen von bestimmten Hosts Zugriff auf unterschiedliche Datenbanken erhalten.Zusätzlich werden noch weitere Attribute für die Art des Zugriffs auf die Datenbanken eingerichtet.

  1. Hosts: Hostangaben ohne Wildcards werden vor Hostangaben mit Wildcards überprüft. Bei leeren Hostfeldern wird die Tabelle «host» überprüft.
  2. User: Userangaben ohne Wildcard werden vor Userangaben mit Wildcards überprüft.

Werden dem User in der Tabelle «user» Rechte erteilt, dann gelten diese auch dann, wenn sie ihm in der Tabelle «db» nicht erlaubt sind!

Zugriffe von Hosts

Steht in der «Host»-Spalte der Tabelle «User» ein Leerfeld, dann werden die Zugriffsrechte des Users von der Tabelle «host» bestimmt.

$ mysql -p -u root
mysql> use mysql;
mysql> insert into host (host,db,user) values ('localhost', 'rana', 'chris');

Weitere Kommandi (exklusive SQL)

Kommando Erklärung
Tabelle 2
mysql> show databases; Anzeige der Datenbanken auf dem Server
mysql> use database Einsteigen in die Datenbank
mysql> show tables; Anzeige der Tabellen in der Datenbank