| MySQL unter OpenBSD |
|
Was dem Einen sein PDA ist dem Anderen sein 'kleines' Adressbuch auf Basis von MySQL und dem Perl-DBI-Interface. Also, wer noch einen alten 486'er uebrig hat weiss nun was er damit tun kann ... Diese Anleitung bezieht sich auf OpenBSD 3.1 ... Da ich selber ein Anfaenger auf diesem Gebiet bin wird es mit Sicherheit so sein, dass die eine oder andere Vorgehensweise, Felddeklaration oder whatever nur suboptimal sind. Aber ich hoffe, dass dieser kleine Workshop trotzdem als Einstieg dienen kann. 1. Installieren und Konfigurieren von MySQL % pkg_add mysql-client-3.23.49.tgz % pkg_add mysql-server-3.23.49.tgzWeitere Abhaengigkeiten loest OpenBSD wie gewohnt auf. Ausserdem werden die /etc/passwd und /etc/group um den user/group 'mysql' ergaenzt. Das Verzeichnis /var/mysql ist nun ebenfalls vorhanden. Damit die Datenbank auch automatisch beim Booten startet schreiben wir noch schnell folgendes an das Ende von /etc/rc.local:
echo 'starting mysql'; /usr/local/bin/safe_mysqld --user=mysql --log& Hinweis: Die Datenbank laesst sich mittels 'mysqladmin shutdown' stoppen. Wir testen ... nach einem reboot sollten nun mit 'ps ax| grep mysql' die Datenbank-Prozesse erkennbar sein. Als naechstes sollte das Datenbank-root-Password (hat nichts mit dem root-Account aus /etc/passwd gemein!) gesetzt werden:
% mysqladmin -u root password geheim Im Lieferumfang der DB ist fuer administrative Aufgaben ein Commandline-Interface vorhanden, welches wir im weiteren verwenden wollen um uns ein wenig umzusehen und um die Adressdatenbank incl. einem Datenbank-User anzulegen:
% mysql -u root -p > show databases; > use mysql; > show tables; > describe user; > select host, user, password from user; > quit; Die Anzeige mittels 'select' zeigt die Informationen aus der Tabelle 'user', welche die Accounts enthaelt, die auf die DB's zugreifen duerfen. Die Tabelle 'db' erlaubt die Zugriffsrechte dann noch genauer auf die Datenbanken einzugrenzen. Der 'blank'- User wird von MySQL verwendet um anonyme Zugriffe zu erlauben - wird aber bei der Defaultinstallation ohne jede Rechte versehen. Aus allg. Sicherheitserwaegungen loeschen wir aber den 'blank'-User sowie die Testdatenbank. Dazu starten wir wieder das Commandline-DB-Interface:
> use mysql; > delete from user where user=""; > drop database test; 2. Erstellen der Adressdatenbank und Einrichtung eines Users
> create database adressen;
> use adressen;
> edit
create table priv_a
(name char(30),
vname char(15),
strasse char(25),
stadt char(25),
telefon char(20),
handy char(20),
work char(20),
email char(30),
serial char(4))
:wq
> ;
> use mysql;
> insert into user (host, user, password) values ('localhost',
'ingolf', 'bla');
> update user set Password=password('geheim') where user='ingolf';
> insert into db (host, db, user, select_priv, insert_priv,
update_priv, delete_priv) values ('%', 'adressen',
'ingolf', 'y', 'y', 'y', 'y');
> flush privileges;
> quit;
3. Installieren des Perl-DBI-Datenbankinterface Wir benoetigen folgende Packet's (welche aber automatisch beim installieren von mysql-server-3.23.49 mitkommen, da sie als abhaengige Packket gekennzeichnet sind): p5-DBI-1.21 unified perl interface for database access p5-DBD-Msql-Mysql-1.22.19 MySQL drivers for the Perl DBI 4. Erfassen von Userdaten mit einem ersten Perl-Programm. Die Serial-Nummer sollte eineindeutig vergeben und zudem besser automatisch generiert werden. Sie kann fuer administrative Zwecke oder zur Identifikation fuer Loesch- oder Updatescripte verwendet werden - dies wurde hier aber zunaechst ignoriert. 5. Abfrage der Datenbank ueber ein CGI-Frontend. Diese Programm muss lediglich nach /var/www/cgi-bin kopiert werden (der Apache muss natuerlich schon laufen). Durch Aufrufen der URL http://localhost/cgi-bin/data.cgi koennen nun die Adressdaten abgefragt werden. Die Zeile '$a[0] = $query->param('such');' fragt zudem noch spezielle Suchbegriffe ab, welche dem CGI mit der URL uebergeben werden koennen. Beispiel: http://localhost/cgi-bin/data.cgi?such=Hamburg In diesem Fall werden die Felder Nachname, Vorname und Stadt nach dem Begriff 'Hamburg' durchsucht. Wenn kein Suchwort verwendet wird, dann werden alle Eintraege der Datenbank ausgegeben. 6. Datensicherung Die Datenbanken koennen am einfachsten mit kleinen selbstgebauten Shellscripten gesichert werden. Dazu schreibt man folgendes:
% mysqldump -u root --password=geheim --opt adressen > adressen.dump % mysqldump -u root --password=geheim --opt mysql > mysql.dump Nach einem 'rm /var/mysql/adressen/*' (*aua*) kann dann die DB wieder hergestellt werden:
% mysql -u root -p adressen < adressen.dump Hinweis: Fuer Performance-Verbesserungen bitte hier: http://www.hostbaby.com/misc/mysql-openbsd.html nachlesen!
-- |