> For the complete documentation index, see [llms.txt](https://docs.enginsight.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enginsight.com/docs/knowledge-base/datenbank/wie-richte-ich-fur-die-enginsight-datenbank-ein-passwort-ein.md).

# Wie richte ich für die Enginsight Datenbank ein Passwort ein?

Enginsight nutzt MongoDB als Datenbank. Diese ist standardmäßig nicht mit einem Passwort abgesichert.&#x20;

Im Folgenden zeigen wir dir, welche Schritte du vornehmen musst, um die MongoDB-Systemdatenbank `admin` und die Enginsight Datenbank mit Benutzername und Passwort (Role-Based Access Control; RBAC) zu schützen.

{% stepper %}
{% step %}

### Enginsight Applikationsserver stoppen

1. Logge dich auf dem **Enginsight Applikationsserver** ein.
2. Navigiere mit folgendem Befehl in das Enginsight Installationsverzeichnis:

```
cd /opt/enginsight/enterprise
```

2. Stoppe nun den Applikationsserver mit folgendem Befehl:

```
sudo docker-compose down
```

{% hint style="danger" %}
**Bitte beachte**: Dieser Schritt ist vor Änderungen an der Datenbank *zwingend notwendig*!
{% endhint %}
{% endstep %}

{% step %}

### MongoDB-Shell öffnen

1. Logge dich auf dem **Enginsight Datenbankserver** ein.
2. Öffne mit folgendem Befehl die **MongoDB-Shell**:

```
sudo mongosh
```

{% endstep %}

{% step %}

### In die Admin-Systemdatenbank navigieren

Navigiere mit folgendem Befehl in die Admin-Systemdatenbank `admin`:

```
use admin
```

{% endstep %}

{% step %}

### Administrator-Benutzerkonto anlegen

Gib folgenden Befehl ein, um für die Datenbank ein Administrator-Benutzerkonto mit Benutzername und Passwort anzulegen:

```
db.createUser(
  {
    user: "mongoAdminUser",
    pwd: "<PasswortMongoAdminUser>",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
```

{% hint style="info" %}
Vergiss dabei nicht, `<PasswortMongoAdminUser>` mit einem Passwort deiner Wahl zu ersetzen.
{% endhint %}
{% endstep %}

{% step %}

### Benötigte Rolle hinzufügen

1. Gib folgenden Befehl ein, um die Rolle hinzuzufügen, die der neue Administrator-Benutzer benötigt, um den Status des MongoDB-Replica-Sets einsehen zu können:

```
db.grantRolesToUser(
  "mongoAdminUser",
  [
    { role: "clusterMonitor", db: "admin" }
  ]
)
```

2. Schließe die MongoDB-Shell mit folgendem Befehl:

```
quit ()
```

{% endstep %}

{% step %}

### MongoDB-Konfigurationsdatei öffnen

Öffne mit folgendem Befehl die **MongoDB-Konfigurationsdatei** `mongod.conf`:

```
sudo nano /etc/mongod.conf
```

{% endstep %}

{% step %}

### Security-Abschnitt erweitern oder anpassen

1. Ergänze den Abschnitt `security` wie folgt und/oder passe ihn entsprechend an, um die Authentifizierung mit Passwort zu aktivieren:

```
security:
    authorization: "enabled"
```

2. Speichere die Konfigurationsdatei (**Strg** + **o**) und bestätige den Speicherprozess. Schließe die Datei (**Strg** + **x**).
   {% endstep %}

{% step %}

### Datenbank-Dienst neu starten

Starte den Datenbank-Dienst mit folgendem Befehl neu, um die Konfigurationsänderungen zu übernehmen:

```
sudo systemctl restart mongod
```

{% endstep %}

{% step %}

### Als Administrator bei der Datenbank anmelden

Melde dich nun mit folgendem Befehl als Administrator bei der Datenbank an:

```
sudo mongosh 'mongodb://mongoAdminUser:<PasswortMongoAdminUser>@<IPAdresseDatenbankserver>:27017/admin?authSource=admin&replicaSet=rs0'
```

{% hint style="info" %}
Vergiss dabei nicht, `<PasswortMongoAdminUser>` mit dem zuvor vergebenen Passwort für das Administrator-Benutzerkonto sowie `<IPAdresseDatenbankserver>` entsprechend zu ersetzen.
{% endhint %}
{% endstep %}

{% step %}

### In die Enginsight Datenbank navigieren

Navigiere nun mit folgendem Befehl in die Enginsight Datenbank:

```
use enginsight
```

{% endstep %}

{% step %}

### Benutzer für die Enginsight Datenbank anlegen

1. Gib folgenden Befehl ein, um für die Enginsight Datenbank ein Standard-Benutzerkonto mit Benutzername und Passwort anzulegen:

```
db.createUser(
  {
    user: "mongoDefaultUser",
    pwd: "<PasswortMongoDefaultUser>",
    roles: [ { role: "readWrite", db: "enginsight" } ]
  }
)
```

{% hint style="info" %}
Vergiss dabei nicht, `<PasswortMongoDefaultUser>` mit einem Passwort deiner Wahl zu ersetzen.
{% endhint %}

2. Schließe die MongoDB-Shell mit folgendem Befehl:

```
quit ()
```

{% endstep %}

{% step %}

### Änderungen auf dem Enginsight Applikationsserver übernehmen

1. Gehe zurück zum Applikationsserver und navigiere mit folgendem Befehl in das Enginsight Installationsverzeichnis:

```
cd /opt/enginsight/enterprise
```

2. Führe mit folgendem Befehl das Setup-Skript für den Applikationsserver neu aus:

```
sudo ./setup.sh
```

3. Gib bei der Abfrage der URIs und URLs die **MongoDB URI** wie folgt an:\
   `mongodb://mongoDefaultUser:<PasswortMongoDefaultUser>@<IPAdresseDatenbankserver>:27017/enginsight?authSource=enginsight&replicaSet=rs0`

{% hint style="info" %}
Vergiss nicht, `<PasswortMongoDefaultUser>` und `<IPAdresseDatenbankserver>` entsprechend zu ersetzen.&#x20;
{% endhint %}
{% endstep %}
{% endstepper %}

***
