ich installiere OPSI 4.3 (4.3.26.23) (Paket opsi-server, nicht expert, nicht full) unter Ubuntu 24.04 in LXC in Verbindung mit einer externen Datenbank.
Die Server haben folgende IP-Adressen (beispielhaft):
OPSI-Host IP: 192.168.0.100
MySQL-Datenbank: 192.168.0.101
Zum Einrichten der externen Datenbankverbindung nutze ich gemäß Anleitung den Befehl
Code: Alles auswählen
opsiconfd setup --configure-mysql
Code: Alles auswählen
Do you want to configure the MySQL database connection? [y/n]: y
Enter MySQL server address (192.168.0.101):
Enter MySQL database (opsi):
Enter MySQL admin username (root):
Enter MySQL admin password:
Enter MySQL username for opsiconfd (opsi):
MySQL admin connection established
Setting up MySQL user
MySQL user setup successful
Creating MySQL database 'opsi' on '192.168.0.101'
Failed to create MySQL database: (MySQLdb.OperationalError) (1045, "Access denied for user 'opsi'@'192.168.0.100' (using password: YES)")
(Background on this error at: https://sqlalche.me/e/14/e3q8)
[3] [2024-12-29 18:45:47.799] [ ] Failed to setup MySQL: (MySQLdb.OperationalError) (1045, "Access denied for user 'opsi'@'10.255.0.108' (using password: YES)")
(Background on this error at: https://sqlalche.me/e/14/e3q8)
Please use `opsiconfd setup --configure-mysql` to configure the MySQL connection manually. (__init__.py:281)
OPSI scheint MySQL Benutzer "opsi" mit dem Host 192.168.0.101, sprich der IP-Adresse der Datenbank, nicht aber mit der OPSI-Server IP-Adresse 192.168.0.100 anzulegen: Gemäß https://dev.mysql.com/doc/refman/8.4/en ... names.html ist der Host "opsi@<HOST>", allerdings die IP-Adresse des Clients, von der die MySQL Verbindung kommt. Da das OPSI Setup-Skript als Host-Parameter allerdings die IP-Adresse des MySQL Servers setzt, funktioniert ein Login von 192.168.0.100 natürlich nicht.
Ein Blick in den Source-Code härtet den Verdacht:
https://github.com/opsi-org/opsiconfd/b ... end.py#L58
Hier wird der Nutzer mit
Code: Alles auswählen
CREATE USER IF NOT EXISTS '{mysql.username}'@'{address}'
Workaround
Benutzer in der Datenbank manuell erstellen und die Zugangsdaten in /etc/opsi/backends/mysql.conf eintragen. Hier fand ich die Dokumentation zunächst allerdings etwas uneindeutig. Hier heißt es
Daraus schließe ich als Leser, dass dies bei der Verwendung eines externen Datenbankservers nicht automatisch erfolgt und ich zwingend "configure-mysql" ausführen muss. Das das "Alternativ" in der Sektion "Konfigurationsdatei" steht und damit die Alternative zum "configure-mysql" für die externe Datenbank gemeint ist, ist auf den ersten Blick missverständlich.Der opsi-Configserver benötigt Zugriff auf einen MySQL-Server. Läuft der MySQL-Server auf demselben Rechner, dann erfolgt die Konfiguration in der Regel automatisch über opsiconfd setup. Sollte die automatische Konfiguration nicht funktionieren, oder soll ein externer MySQL-Server verwendet werden, dann können Sie die Konfiguration manuell vornehmen. Dazu verwenden Sie den folgenden Befehl: