Seite 1 von 1

OPSI Setup - Falscher User Host bei externem Datenbankserver

Verfasst: 29 Dez 2024, 21:14
von SBusse
Moin zusammen,

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
Fehlerbild

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)
Analyse
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:
MySQL-User.png
MySQL-User.png (10.81 KiB) 7230 mal betrachtet
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}'
angelegt, wobei die Variable address zuvor aus dem Interactive Prompt für die MySQL Datenbank IP-Adresse übernommen wird.

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
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:
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.

Re: OPSI Setup - Falscher User Host bei externem Datenbankserver

Verfasst: 30 Dez 2024, 15:31
von j.schneider
Hallo,

vielen Dank für den detaillierten Bug-Report.
Das Problem sollte ab opsiconfd 4.3.27.1 behoben sein.

Grüße
Jan Schneider