You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

ACHTUNG! Diese Anleitungen stammen von Jörg Lehners. Ich habe leider keine Möglichkeit zu testen, ob die Anleitungen noch aktuell sind. Ich bemühe mich jeden Jahr um Updates. Bei Problemen bitte mir auch Bescheid geben.

19. Jan. 2021

Auf den Rechnern der ARBI steht eine MySQL Datenbank Installation
in der Version 5.7.32 zur Verfuegung, die bei Bedarf fuer spezielle
Anwendungen konfiguriert und laufen gelassen werden kann. Dieser
Text beschreibt in Kuerze, welche Details dabei zu beachten sind.

Die Installation befindet sich im Directory

/usr/local/lib/mysql5

Fuer die Benutzung ist ueblicherweise nur ein kleiner Teil dieser
Dateien von Bedeutung.

Vorweg der Hinweis auf die Dokumentation: alle Aspekte des Betriebes
einer MySQL Datenbank werden in der Dokumentation behandelt, die ueber
den URL
file://localhost/usr/local/lib/mysql5/docs/html/index.html
abgerufen werden kann.

Zur Benutzung einer MySQL Datenbank muss zunaechst ein Directory-Geruest
aufgebaut werden. Dazu wird am Besten ein Unterverzeichnis angelegt,
das die noetigen Directories und Dateien aufnimmt (der Pfadnamen-Prefix
'/user/admin/testusr' ist natuerlich nur ein Beispiel und muss passend
abgeaendert werden):

mkdir /user/admin/testusr/mysql

In diesem Directory wird nun zunaechst eine minimale, leere Datenbank
angelegt. Dies passiert am Besten durch das Hilfsprogramm mysql_install_db
der MySQL Installation:

/usr/local/lib/mysql5/bin/mysql_install_db \
--basedir=/usr/local/lib/mysql5 \
--datadir=/user/admin/testusr/mysql/data

Es wird das Unterdirectory 'data' mit den fuer die Speicherung der Daten
vorgesehen Directories angelegt und mit Dateien ausgestattet. Das initiale
Datenbank-Administator Passwort wird in der Datei ~/.mysql_secret abgelegt.

Fuer weitere Aenderungen und Einstellungen an der Datenbank muss nun der
Datenbank-Serverprozess gestartet werden. Dieser Datenbank-Serverprozess
muss Resourcen konfiguriert bekommen, die zunaechst zu waehlen sind. Die
Kommunikation der Datenbank-Anwendungen mit dem Datenbank-Serverprozess
kann ueber zwei Kommunikations-Mechanismen passieren: UNIX Domain Sockets
und TCP/IP (INET) Sockets/Ports. Die von MySQL standardmaessig benutzen
Einstellungen (/tmp/mysql.sock bzw. Port 3306) lassen sich nicht immer
kollisionsfrei mit anderen MySQL Installation auf einem Rechner benutzen.
Daher sollten besser gleich Einstellungen gewaehlt werden, die sich nicht
mit anderen Installation ueberschneiden. Ausserdem wird auf den ARBI-
Rechnern unter /tmp und auch /usr/tmp regelmaessig aufgeraeumt, was auch
einen UNIX Domain Socket /tmp/mysql.sock betreffen wird, wenn dieser
nicht regelmaessig erneuert wird. Daher sei als UNIX Domain Socket ein
Name im Arbeits-Directory der Installation vorgeschlagen:
/user/admin/testusr/mysql/mysql.sock.
Als TCP/IP Portnummern sei z.B. 2101 vorgeschlagen.

Der MySQL Serverprozess wird dann mit der Kommandozeile

nohup /usr/local/lib/mysql5/libexec/mysqld \
--datadir=/user/admin/testusr/mysql/data \
--socket=/user/admin/testusr/mysql/mysql.sock \
--general-log \
--general-log-file=/user/admin/testusr/mysql/mysql.log \
--port=2101 --skip-external-locking \
>> /user/admin/testusr/mysql/start.log 2>&1 &

gestartet.
Erlaeuterungen: Da sich das Programm mysqld nicht selbsttaetig 'in den
Hintergrund bringt' wird dies mit '&' am Ende der Kommandozeile von der
Shell angefordert. Die Kommandozeile ist lang, weswegen '\' zur Zeilenfaltung
benutzt werden. Es erfolgt eine Umleitung der Ausgaben des Kommandos und
der Fehlermeldungen ('>>' und '2>&1'). Ausserdem wird ein Logging der
Datenbankzugriffe angefordert.
Sollte die mit der Zeit recht umfangreiche werdenden Logs nicht noetig
sein, so koennen die Optionen --general-log und --general-log-file= einfach
weggelassen werden.

Nun kann das Datenbank-Administator Passwort der Datenbank gesetzt werden.
Da die Datenbank noch keine Zugriffe ueber TCP/IP Sockets/Verbindungen frei-
geschaltet hat, muss der Zugriff ueber den UNIX Domain Socket durchgefuehrt
werden. Da nicht der Standard-Name benutzt wird, muss der gewaehlte Name
explizit angegeben werden. Das initiale Passwort wird aus der Datei
~/.mysql_secret extrahiert. Die Kommandozeile lautet daher:


/usr/local/lib/mysql5/bin/mysqladmin \
--socket=/user/admin/testusr/mysql/mysql.sock \
-u root --password=`sed /^#/d ~/.mysql_secret` \
password 'geheim'

Statt des Passwortes 'geheim' sollte natuerlich ein anderes Passwort
gewaehlt werden.

Ab jetzt steht die Datenbank zur Verfuegung und kann mit dem MySQL
Administrations-Programmen verwaltet werden.

Um diese Programme mit kurzem Namen aufrufen zu koennen, kann es
sinnvoll sein, das Directory /usr/local/lib/mysql5/bin in den Suchpfad
mit aufzunehmen:
PATH=/usr/local/lib/mysql5/bin:$PATH
export PATH

Ebenso kann es sinnvoll sein, den Suchpfad fuer Manual-Seiten um das
Directory mit den MySQL Manual-Seiten zu erweitern:
MANPATH=/usr/local/lib/mysql5/man:$MANPATH
export MANPATH

Da die staendige Angabe des UNIX Domains Sockets ev. laestig wird, kann
es sinnvoll sein, diesen Wert in einer Umgebungsvariablen zu setzen:
MYSQL_UNIX_PORT=/user/admin/testusr/mysql/mysql.sock
export MYSQL_UNIX_PORT

MySQL Programme und andere Anwendungen, die ueber den UNIX Domain Socket
mit dem Datenbank-Serverprozess kommunizieren, muessen auf demselben
Rechner ablaufen wie auch der mysqld Serverprozess laeuft. Bei einer
Freischaltung der TCP/IP Zugriffe innerhalb der Datenbank kann auch von
von anderen Rechner im Internet aus auf die Datenbank zugegriffen werden.
Dann ist statt des UNIX Domains Sockets der Rechnername bzw. die IP-Adresse
des Rechners und die gewaehlte TCP/IP Portnummer anzugeben.
Da die komplette Benutzer- und Zugriffsverwaltung von MySQL selbst komplex
und umfangreich ist sei hier nur auf das einfache Freischalten des
Verwaltungszuganges per Root-Benutzer von einem anderen Rechner aus
hingewiesen. Mittels der Kommandofolge (da es sich um eine mehrzeiligen
Kommandodialog handelt, sind Promptsymbole der beteiligten Shell und des
mysql Kommandos mit angegeben)

testusr @ duemmer> mysql --user=root -p \
> --socket=/user/admin/testusr/mysql/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
mysql> connect mysql;
Reading table information for completion of table and column names
[...]
mysql> GRANT ALL ON *.* TO 'root'@'duemmer.informatik.uni-oldenburg.de'
-> IDENTIFIED BY 'geheim';
Query OK, 1 row affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.05 sec)

mysql> quit;
Bye
testusr @ duemmer>

wird der Zugang zum MySQL Server fuer Zugriffe vom Rechner
duemmer.informatik.uni-oldenburg.de aus als Benutzer 'root' mit dem Passwort
'geheim' freigeschaltet. Wenn als Rechnername '%' angegeben wird, kann
von allen Rechnern des Internets auf den Root-Benutzer zugegriffen werden.

Auf diesem Rechner kann dann z.B. mittels des Kommandos

mysql --host=duemmer --user=root -p --port=2101

auf den MySQL auf dem Rechner duemmer zugegriffen werden. Der
MySQL Server ist dabei ueber den oben gewaehlten Port 2101 zu erreichen.

Die sich in den Log-Dateien ansammelnden Zugriffs- und Fehlermeldungen
muessen regelmaessig ueberprueft werden. Bei Einbruchsversuchen sollte
nie leichtfertig weggesehen werden, sondern Bescheid gegeben werden.
Es kann sein, dass aus betrieblichen Gruenden der MySQL-Datenbank-
Serverprozess beendet oder der betreffende Rechner neu gestartet werden
muss. U.U. befinden sich darueber keinerlei Meldung in den Log-Dateien.

Fuer die Pflege einer MySQL Datenbank gibt es verschiedene Programme.
Auf den ARBI-Rechner sind z.Z. die bei der MySQL mitgelieferten
Programme installiert (mysql, mysqladmin, usw.) sowie das Programm
gmysql (GTK Frontend fuer MySQL Datenbanken).
Dem Programm gmysql muss ueber die Umgebungsvariablen MYSQL_UNIX_PORT
der Pfadname zum UNIX Domain Socket angegeben werden. In einem
Login-Dialog kann man sich dann mit der Datenbank verbinden lassen.
Als Hostname im Zusammenhang mit dem UNIX Domain Socket muss 'localhost'
oder ein leerer Name (Eingabefeld leer lassen) benutzt werden.

Besonders erwaehnt sei noch das Programmpaket 'phpMyAdmin': hierbei
handelt es sich um eine Sammlung von PHP Programmen zur Verwaltung einer
MySQL Datenbank. Dieses Programmpaket setzt einen Web-Server mit
integriertem und freigeschaltetem PHP7 voraus. Die Einrichtung eines
solchen Web-Server ist in einem anderen Dokument beschrieben. Das
Programmpaket (hier in der Version 5.0.3) wird im Bereich des htdocs-
Verzeichnisses des Web-Server abgelegt und konfiguriert. Z.B.:

cd /user/admin/testusr/apache/htdocs
unzip ~/phpMyAdmin-5.0.3-all-languages.zip
mv phpMyAdmin-5.0.3-all-languages phpMyAdmin
cd phpMyAdmin

Es wird ein Directory phpMyAdmin erzeugt, in das allerhand .php Dateien
abgelegt werden. Dem im Apache/PHP7 integriertem MySQL Modul muss ueber
die Datei

config.inc.php

die Daten zum Zugriff auf den Datenbank-Server zugaenglich gemacht werden.
Diese Datei muss ggf. zunaechst aus einer Vorlage config.sample.inc.php
erstellt werden:

cp config.sample.inc.php config.inc.php

Die Datei config.inc.php kann anschliessend geaendert werden, z.B.:

$cfg['blowfish_secret'] = 'IrgendetwasZufaelliges';

/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['socket'] = '/pfad/zum/mysql.sock';
// Path to the socket - leave blank for default socket
$cfg['Servers'][$i]['compress'] = false;

Da die Datei config.inc.php mit der Zeile 'blowfish_secret'
Geheiminformationen enthaelt, sollte sie vor unberechtigten Lesezugriffen
mittels
chmod 600 config.inc.php
geschuetzt werden. Der Apache Webserver muss aber mindestens lesenden
Zugriff auf diese Datei haben, also z.B. unter der User-ID laufen, die
die Datei als Eigentuemer hat.
Wegen des Zugriffs auf den MySQL Datenbank-Serverprozess ueber den UNIX
Domain Socket muss der Apache Webserver auf demselben Rechner laufen,
wie der MySQL Datenbank-Serverprozess.
Auf die phpMyAdmin Funktionen kann schliesslich ueber z.B. die URL

http://duemmer.informatik.uni-oldenburg.de:8088/phpMyAdmin/index.php

zugegriffen werden. Rechnernamen und Portnummer sind natuerlich enstprechend
der gewaehlten Werte zu aendern.

Achtung: fuer einen dauerhaften Betrieb eines MySQL-Datenbank-
Serverprozesses auf den ARBI-Rechnern bitte in jedem Fall eine Mitteilung
an Joerg Lehners (Lehners@Informatik.Uni-Oldenburg.DE) schicken. In der
Mitteilung bitte den Grund fuer den Datenbank-Serverprozess angeben,
sowie den Rechner benennen, auf dem der Prozess laufen wird.
MySQL-Datenbank-Serverprozesse auf den ARBI-Rechnern duerfen nur fuer die
Belange des Informatik-Studiums (z.B. Software-Projekt) betrieben werden.

Bei Fragen, Anregungen und Korrekturvorschlaegen bitte Mail an Joerg
Lehners (Lehners@Informatik.Uni-Oldenburg.DE) schicken.

  • No labels