MySQL Server Installation

Aus Laub-Home Wiki

Red Hat Linux Installation

yum install mysql-server mysql

Danach das Root Passwort vergeben

/usr/bin/mysqladmin -u root password 'YOURROOTPASSWORT'

und natürlich in den Autostart:

chkconfig mysqld on

Absicherung nach der Installation

Bei Red Hat Linux Installation gibt es zwei kleine Dinge zu beachten, zum einen werden leere "Gast" Benutzer angelegt, durch die man sich mit einem beliebigen Namen einfach an der DB anmelden kann und zum anderen wird mit dem mysqladmin Befehl nur das Root Passwort des "root@localhost" gesetzt, nicht aber des "root@127.0.0.1" und des "root@hostname". Dies macht es möglich mit gezieltem Befehl sich ohne root Passwort an der Datenbank als root anzumelden!

mysql -uroot -p -e 'SELECT host,user,password FROM mysql.user;'
+-------------------------+------+-------------------------------------------+
| host                    | user | password                                  |
+-------------------------+------+-------------------------------------------+
| localhost               | root | *6B6AEE382F683A37EF9EEA02EE828FFB01652577 |
| HOSTNAME                | root |                                           |
| 127.0.0.1               | root |                                           |
| localhost               |      |                                           |
| HOSTNAME                |      |                                           |
+-------------------------+------+-------------------------------------------+

Deshalb werden zuerst die "Gast" Benutzer gelöscht:

mysql -uroot -p -e "DELETE FROM mysql.user WHERE user='';"

Und dann allen Root Benutzern ein Passwort verpasst:

mysql -uroot -p -e "SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('YOURROOTPASSWORD');"
mysql -uroot -p -e "SET PASSWORD FOR 'root'@'YOURHOSTNAME' = PASSWORD('YOURROOTPASSWORD');"

Nun sollte die history geleert werden, da sonst hier die Passwörter im Klartext stehen:

history -c

Überprüfen kann man das Ergebnis dann mit folgendem Befehl:

mysql -uroot -p -e 'SELECT host,user,password FROM mysql.user;'

das Ergebnis sollte dann in etwa so aussehen:

+-------------------------+------+-------------------------------------------+
| host                    | user | password                                  |
+-------------------------+------+-------------------------------------------+
| localhost               | root | *6B6AEE382F683A37EF9EEA02EE828FFB01652577 |
| hostname                | root | *6B6AEE382F683A37EF9EEA02EE828FFB01652577 |
| 127.0.0.1               | root | *6B6AEE382F683A37EF9EEA02EE828FFB01652577 |
+-------------------------+------+-------------------------------------------+

Wichtig ist, das hinter jedem Root Benutzer nun ein gehashtes Passwort steht und das es keine "leeren" User Felder gibt!

Debian / Ubuntu Linux Installation

aptitude install mysql-server mysql-client

Konfiguration

Zu Konfiguration ist wenig zu sagen, der Server läuft in den Standard Einstellungen schon sehr performant und stabil. Das einzige was sich immer anbietet ist die Datenbank nach /srv/mysql zu verschieben. Wie das geht kann man hier lesen:

Wichtig bei Ubuntu Systemen ist, das man den Apparmor Dienst berücksichtigt! Die Konfigurationsdatei my.cnf liegt bei den meisten Distributionen direkt unter /etc/my.cnf. Bei Debian und Ubuntu Systemen liegt sie in einem separaten Unterordner /etc/mysql/my.cnf

Man kann sich außerdem noch überlegen ob der Server auf allen Netzwerk-Interfacen zur Verfügung steht, oder ob man ihn nur auf "localhost" laufen lassen will. Benötigt man keinen externen Zugriff auf den MySQL Server sollte man den folgenden Parameter auf jeden Fall nur auf "localhost" stehen lassen!

# Lauscht auf allen Netzwerk Interfacen
bind-address            = 0.0.0.0
# Lauscht nur auf Localhost
bind-address            = 127.0.0.1
# Lauscht nur auf einer bestimmten IP
bind-address            = 192.168.0.1

Es bietet sich, falls nichts dagegen Spricht, auf jeden Fall an, die Datenbank komplett als UTF-8 laufen zu lassen. Wie das eingerichtet wird findet ihr hier:

Ansonsten besteht das Konfigurieren eher aus Tuning und an Speicherparameter drehen. Hier bietet es sich an den Server erst einmal ein wenig Laufen zu lassen und dann nach mehr als 24h mit Hilfe, der weiter unten stehenden "tuning" Skripte die besten Parameter ausgeben zu lassen.

Hilfreich ist es auch dem Root User Zugriff von anderen Rechner zu gewähren, um zum Beispiel von einem nicht Lokal Installiertem phpMyAdmin darauf zuzugreifen. Wie das geht findet ihr hier:

Tuning

Hier findet ihr eine Anleitung wie man ein bischen mehr Power aus dem MySQL Server holt:

Sonstiges

Alles was hier sonst noch zu MySQL zu finden ist: