# 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. Im Folgenden zeigen wir dir, welche Schritte du vornehmen musst, um die MongoDB-Systemdatenbank `admin` und die Enginsight Datenbank mit einem Passwort 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 Applikationsserver übernehmen

1. Logge dich auf dem Enginsight Applikationsserver ein 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.enginsight.com/docs/knowledge-base/datenbank/wie-richte-ich-fur-die-enginsight-datenbank-ein-passwort-ein.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
