Ich verwende MariaDB obwohl Debian eine der letzten Distributionen ist, die noch MySQL als Standard haben.
Dem SQL-Server gebe ich deutlich mehr Speicher: 1GB plus 512MB Swap.
Oben Rechts im Proxmox-Frontend auf 'Create CT' klicken um den Container zu erstellen.
Der SQL-Server ist ausschlisslich im virtuellen Netz.
Der SQL-Server muss automatisch gestartet werden. Also die entsprechende Option aktivieren.
Die im CT, nicht die vom Host, also die "/Pool1/subvol-247-disk-1/etc/hosts"
127.0.0.1 localhost 192.168.99.247 sql.intern.comasys.ch sql ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Und gleich mit SSH Auf den Container:
ssh root@192.168.99.247 -p55
apt-get install mariadb-server
Zum verlangten Passwort mache ich wie immer keine Vorgaben.
Zuerst stoppen wir den Dienst:
service mysql stop
Da in "/etc/mysql/my.cnf" alles unter "/etc/mysql/conf.d" includiert wir, können wir einfach eine zusätzliche .cnf anlegen:
Standard ist nur "127.0.0.1" aktiv, wir wollen aber, dass alle CT/VM zugreifen dürfen.
Un dann habe ich noch was an den InnoDB-Werten zu schrauben. Wobei die InnoDB-Einstellungen von hier übernommen sind.
[mysqld] bind-address = 192.168.99.247 innodb_file_per_table = yes innodb_log_file_size = 1G innodb_buffer_pool_size = 4G innodb_buffer_pool_instances = 4
Durch das aktviern von "innodb_file_per_table" sollten einige Dateien gelöscht werden. Beim neustart des Dienstes werden sie automatisch neu angelegt.
cd /var/lib/mysql rm ibdata1 rm ib_logfile0 rm ib_logfile1
Der Dienst darf jetzt keinenfalls gestartet werden! Der von mir verlangte Pool von 4G haben wir im CT nicht zur Verfügung! Der Pool kann unmöglich angelegt werden und der Start mislingt. Wir müssen also mal wieder auf den Host und ein Verzeichnis erstellen das wir dann einbinden können.
Jetzt den CT runterfahren, weiter geht es auf dem Host.
Die Daten lege ich wieder auf den Host und nutze Bind-Mount für den Container.
Das vorhandene Verzeichnis aus dem CT auf den Host verschieben, und dann das original für den Mountpoint wieder erstellen.
mv /Pool1/subvol-247-disk-1/var/lib/mysql /Pool1/DATA/247-Sql mkdir /Pool1/subvol-247-disk-1/var/lib/mysql
Folgende Zeile am Schluss einfügen:
lxc.mount.entry: /Pool1/DATA/247-Sql var/lib/mysql none bind 0 0
Im Verzeichnis "/var/lib/mysql" müssten wir die wieder erstellten "ib_logfile?" mit jetzt je 1GB Grösse sehen. Obwohl unser CT nur 1GB Disk hat, ist das dank Bind-Mount kein Problem.
Ein "ss -ln | grep 3306" müsste unsere IP und nicht den Localhost (127.0.0.1) als aktiv zeigen.
Und mit "mysql -p" und dem bei der Installation angegebenen Passwort können wir uns auf dem SQL-Server einloggen. Ein "show databases;" zeigt uns die 3 System-Datenbanken.
Mit "exit;" verlassen wir die SQL-Shell wieder.
Da mit der Zugriff für Root auch vom Web-Server aus funktionniert, müssen wir die Berechtigungen so anpassen, dass root aus dem Netz zugreifen darf.
GRANT ALL ON *.* TO "root"@"192.168.99.%" IDENTIFIED BY "PassWort"; GRANT ALL ON *.* TO "root"@"192.168.99.%" WITH GRANT OPTION;
Ausführen mit "mysql -p </usr/var/mysql/root-user.sql".
Das Passwort PassWort in der ersten Zeilen durch etwas vernünftiges ersetzen!
Somit ist der SQL-Server grundsätzlich bereit. Die Berchtigung ist im Moment etwas grosszügig, die passen wir später mit PhpMyAdmin an...
Allerdings können die 1GB Ram und 512MB Swap etwas knapp bemessen sein.
Je nach Auslastung muss für den produktiven Betrieb noch mehr zugestanden werden.
Bei intensiver Nutzung kann es auch sein,
dass mehr als nur einen Prozessor zugewiesen werden muss.