VOICE-Homepage: http://de.os2voice.org |
März 2004
Inhaltsverzeichnis
|
Von Wolfgang Draxler © März 2004 |
Kommen wir nun zum zweiten Artikel meiner Reihe. In diesem werde ich beschreiben, wie man mehrere User anlegen kann. Weiter werden wir auch WPS-Objekte anlegen, die diverse Funktionen übernehmen. Wie z.B. das Anlegen bzw. Löschen einer Datenbank.
Aber bevor wir damit anfangen, nehmen wir noch eine Änderung an der Datenbank vor.
Ich bin der Ansicht, dass Programme und Daten auf verschiedenen Laufwerken gespeichert werden sollten. Denn damit ist es weitaus einfacher, ein Backup zu erstellen. Dies werden wir nun auch mit MySQL durchführen. Deswegen sollten Sie den MySQL-Server beenden. Dafür gibt es mehrere Möglichkeiten:
Sie »schiessen« den Server einfach ab. (Nicht die sauberste Lösung, aber es funktioniert. Es ist besser, eine der anderen beiden Möglichkeiten zu verwenden.)
Über das Objekt Shutdown server
oder über das eCS-Fenster. Dazu müssen Sie folgenden Befehl eingeben:
[F:\os2_prog\datenbank\mysql\bin]mysqladmin -ppw -u root shutdown
Hinweis: Statt des oben angegebenen Verzeichnis müssen Sie ihr Installationsverzeichnis angeben. Bei dem Parameter -p müssen Sie statt des Wertes pw Ihr eigenes Paßwort eingeben.
Jetzt sollte die Datenbank nicht mehr in der Fensterliste erscheinen.
MySQL speichert die Daten standardmäßig in dem Verzeichnis <installationspfad>\data ab. (Also bei mir: F:\OS2_Prog\Datenbank\MySQL\data) Dieses Verzeichnis und dessen Unterverzeichnisse kopieren Sie nun auf ein anderes Laufwerk. Am besten verwenden Sie entweder die WPS oder den Befehl xcopy. Ich habe mich für das Verzeichnis G:\Work-OS2\MySQL\data entschieden. Dadurch heißt der xcopy-Befehl:
xcopy F:\OS2_Prog\Datenbank\MySQL\data\*.* G:\Work-OS2\MySQL\data\*.* /h/o/t/s/e/r/v
Nun müssen wir MySQL beim Start das neue Verzeichnis bekanntgeben.
Die Konfigurationsdatei von MySQL heißt my.cnf und befindet sich standardmäßig im Verzeichnis <startlaufwerk>:\MPTN\ETC (dies hängt von der Umgebungsvariable ETC ab). Der Inhalt dieser Datei ist:
[client]
compress
user=root
[mysqld]
user=mysql
preload-client-dll
server-id=419888
basedir=F:/OS2_Prog/Datenbank/MySQL
datadir=F:/OS2_Prog/Datenbank/MySQL/data
Nun öffnen Sie die Datei my.cnf in einem Editor (z.B. e.exe) und ändern den Wert der Anweisung datadir auf das neue Verzeichnis. In meinem Fall wäre das:
datadir=G:/Work-OS2/MySQL/data
Speichern Sie nun die Datei ab und beenden den Editor. Nun müßte die Datei folgendermaßen aussehen:
[client]
compress
user=root
[mysqld]
user=mysql
preload-client-dll
server-id=419888
basedir=F:/OS2_Prog/Datenbank/MySQL
datadir=G:/Work-OS2/MySQL/data
Jetzt können Sie die MySQL-Datenbank wieder starten.
Als nächstes werden wir noch einige Objekte für die WPS einrichten.
Diese wären:
Datenbank hinzufügen
Datenbank entfernen
Dazu werden wir einen User anlegen und die oben genannten Programmobjekte erstellen.
Um einen User anzulegen, müssen Sie wieder die Console starten.
Nun müssen wir in die Datenbank mysql wechseln. Dies geschieht mit dem Befehl use.
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
Jetzt werden wir einmal nachschauen, welche Tabellen in dieser Datenbank »mysql« gespeichert sind:
mysql> show tables; +-----------------+ | Tables_in_mysql | +-----------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +-----------------+ 6 rows in set (0.00 sec)
user: In dieser Tabelle werden alle Benutzer, die auf die Datenbank zugreifen dürfen, gespeichert.
db: Mit dieser Tabelle wird der Zugriff auf die Datenbank beschrieben.
host: Beschreibung der Zugriffsrechte für Hosts.
tables_priv: Beschreibung der Zugriffsrechte für einzelne Tabellen.
columns_priv: Beschreibung der Zugriffsrechte für einzelne Spalten in den Tabellen.
func: In dieser Tabelle werden Informationen zu selbstdefinierten Funktionen gespeichert. (Für die Berechtigungen ist diese Tabelle nicht notwendig.)
Um nun den User WPS anzulegen, benötigen wir die Tabelle USER. Um nun nähere Informationen über diese Tabelle zu erhalten, verwenden Sie den Befehl desc <Tabelle>.
mysql> desc user; +-----------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+---------------+------+-----+---------+-------+ | Host | char(60) | | PRI | | | | User | char(16) | | PRI | | | | Password | char(16) | | | | | | Select_priv | enum('N','Y') | | | N | | | Insert_priv | enum('N','Y') | | | N | | | Update_priv | enum('N','Y') | | | N | | | Delete_priv | enum('N','Y') | | | N | | | Create_priv | enum('N','Y') | | | N | | | Drop_priv | enum('N','Y') | | | N | | | Reload_priv | enum('N','Y') | | | N | | | Shutdown_priv | enum('N','Y') | | | N | | | Process_priv | enum('N','Y') | | | N | | | File_priv | enum('N','Y') | | | N | | | Grant_priv | enum('N','Y') | | | N | | | References_priv | enum('N','Y') | | | N | | | Index_priv | enum('N','Y') | | | N | | | Alter_priv | enum('N','Y') | | | N | | +-----------------+---------------+------+-----+---------+-------+
Wie man sieht, erstellt DESC eine Liste aller Spalten der Tabelle USER. Weitere angezeigte Informationen sind:
der Spaltentyp (Feld: Type)
ob das Feld »leer« (null) sein darf (Feld: Null)
ob es zu einen Index gehört (Feld: Key)
was eingetragen wird, wenn das Feld beim Einfügen oder Ändern leer ist (Feld: Default)
zusätzliche Informationen (Feld: Extra)
Um nun den WPS-User anzulegen, muß ein neuer Satz zu der Tabelle hinzugefügt werden. Dazu verwenden wir den Insert-Befehl.
mysql> insert into user -> (host, user, password, Create_priv, Drop_priv) -> values -> ("localhost", "wps", password("wps"), "Y", "Y"); Query OK, 1 row affected (0.04 sec)
Nun ist der Satz bzw. der User in der Datenbank gespeichert. Da MySQL die Berechtigungen intern speichert, müssen diese neue Berechtigungen aktualisiert werden.
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
Um zu kontrollieren, ob der Satz wirklich in der Tabelle gespeichert ist, können wir noch eine Abfrage starten. Dazu verwenden wir den Select-Befehl.
mysql> select * from user; +-----------------------------------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+ | Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | +-----------------------------------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+ | localhost | root | 28748dc05f058960 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | localhost | wps | 6867a41c29783e9f | N | N | N | N | Y | Y | N | N | N | N | N | N | N | N | +-----------------------------------------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+ 2 rows in set (0.00 sec)
Wie man sieht, haben wir jetzt zwei User:
Den User Root, der alle Berechtigungen hat, und den neuangelegten User WPS, der nur die Berechtigung hat, eine neue Datenbank anzulegen bzw. zu löschen.
Normalerweise werden bei dem Insert-Befehl die Spalten, die nicht angegeben sind, mit NULL (also kein Eintrag oder leer) gefüllt. Bei der Tabelle USER ist dies nicht der Fall, denn alle Felder enthalten N. Der Grund hierfür ist, dass die Tabellenbeschreibung der Spalte unter DEFAULT den Wert N enthält.
Nun werden wir noch die dazugehörigen MySQL-Objekte auf der Arbeitsoberfläche anlegen.
Dazu erstellen Sie zwei neue Programmobjekte mit den folgenden Einstellungen:
Objekt: Create Database
Programmname: F:\OS2_PROG\DATENBANK\MYSQL\BIN\MYSQLADMIN.EXE
Parameter: -uwps -pwps create [New Database:]
Symbol: F:\OS2_Prog\Datenbank\MySQL\bin\icons\mySQL-CreateDatabase.ico
Objekt: Drop Database
Programmname: F:\OS2_PROG\DATENBANK\MYSQL\BIN\MYSQLADMIN.EXE
Parameter: -uwps -pwps drop [Drop Database:]
Symbol: F:\OS2_Prog\Datenbank\MySQL\bin\icons\mySQL-DropDatabase.ico
Damit schließe ich den zweiten Teil des Artikels. Im nächsten Artikel werde ich auf SQL genauer eingehen.
Daten und Quellen:
|
Artikelverzeichnis
editor@os2voice.org
< Vorherige Seite | Inhaltsverzeichnis | Nächste Seite >
VOICE-Homepage: http://de.os2voice.org