# MySQL-, MariaDB- en PostgreSQL-databases en gebruikers

> Maak databases en gebruikers aan op je server, bepaal tot welke databases elke gebruiker toegang heeft, haal bestaande op en verbind veilig via een SSH-tunnel.

De pagina **Databases** van een server beheert de databases en databasegebruikers op die server. Je maakt een database aan, maakt een gebruiker met een wachtwoord en kiest precies tot welke databases die gebruiker toegang heeft. Vimonto Deploy voert de SQL voor je uit op de server, dus voor dagelijks werk hoef je nooit zelf in te loggen op MySQL, MariaDB of PostgreSQL.

De pagina is er op servers met een database-engine: app-servers en databaseservers (zie [servertypes](https://ops.vimonto.com/docs/nl/servers/server-types)).

![De pagina Databases met een lijst van databases, hun gebruikers en de verbindingsgegevens](https://ops.vimonto.com/docs-media/nl/server-databases.webp?v=161e760d "Databases en gebruikers op een server")

## Welke database-engines worden ondersteund?

Je kiest de engine als je [de server aanmaakt](https://ops.vimonto.com/docs/nl/servers/create-a-server). Op één server draait één engine.

| Engine | Versies | Poort |
| --- | --- | --- |
| MySQL | 8.4 LTS, 8.0 | 3306 |
| MariaDB | 11.4 LTS, 10.11 LTS | 3306 |
| PostgreSQL | 18, 17, 16 | 5432 |

MySQL- en MariaDB-databases worden aangemaakt met de tekenset `utf8mb4` en de collatie `utf8mb4_unicode_ci`. Alle engines draaien in UTC.

## Waarmee begint een nieuwe server?

Het inrichten maakt één database en één databasegebruiker aan, allebei vernoemd naar de systeemgebruiker van de server (standaard `vimonto`). Die gebruiker heeft toegang tot elke database op de server. Het wachtwoord is het **Databasewachtwoord** dat na het inrichten één keer wordt getoond bij de wachtwoorden van de server. Bewaar het in je wachtwoordmanager, want Vimonto Deploy verwijdert het zodra je bevestigt.

In de lijst **Gebruikers** staat deze gebruiker gemarkeerd als **Systeemgebruiker**, met **Alle databases**. Die toegang houdt hij: je kunt hem niet beperken tot enkele databases en niet verwijderen, want sites zonder eigen databasegebruiker verbinden ermee. Klik op **Wachtwoord wijzigen** ernaast om hem een nieuw wachtwoord te geven; Vimonto Deploy wijzigt dan alleen het wachtwoord en laat zijn rechten zoals ze zijn. Pas `DB_PASSWORD` aan in de [omgeving](https://ops.vimonto.com/docs/nl/sites/environment) van elke site die als deze gebruiker verbindt. Zolang de wachtwoorden van de server nog op je bevestiging wachten, vervangt het nieuwe wachtwoord ook het **Databasewachtwoord** dat daar staat.

## Een database aanmaken

1. Open de server en kies **Databases** in de zijbalk.
2. Klik op **Nieuwe database**.
3. Vul een **Naam** in, zoals `shop_production`. Gebruik letters, cijfers en underscores, maximaal 63 tekens.
4. Klik op **Aanmaken**.

De database staat op **Wordt toegevoegd** tot hij op de server bestaat. Mislukt het aanmaken, klik dan op **Opnieuw**.

> [!TIP]
> Als je [een site aanmaakt](https://ops.vimonto.com/docs/nl/sites/create-a-site), kun je in dezelfde stap een database en een eigen gebruiker aanmaken. De nieuwe database en gebruiker verschijnen dan ook hier.

## Een databasegebruiker toevoegen

1. Klik in het onderdeel **Gebruikers** op **Nieuwe gebruiker**.
2. Vul een **Naam** in (letters, cijfers en underscores, maximaal 32 tekens).
3. Vul een **Wachtwoord** in van minstens 12 tekens, of klik op **Genereren** voor een willekeurig wachtwoord van 24 tekens.
4. Vink onder **Toegang tot** de databases aan die de gebruiker mag gebruiken.
5. Klik op **Aanmaken**.

Vimonto Deploy bewaart geen databasewachtwoorden. Het wachtwoord gaat één keer naar de server, in een versleutelde taak, en wordt daarna vergeten. Noteer het zelf, bijvoorbeeld in de [omgeving](https://ops.vimonto.com/docs/nl/sites/environment) van je site.

### Wat kan een databasegebruiker?

Een gebruiker krijgt alle rechten op de databases die je aanvinkt, en niets op andere databases. De lijst onder elke gebruiker toont de databases, of **Geen toegang** als er niets is aangevinkt.

- Op MySQL en MariaDB wordt de gebruiker aangemaakt voor zowel lokale verbindingen als verbindingen vanaf andere hosts, met dezelfde rechten.
- Op PostgreSQL krijgt de gebruiker alle rechten op elke database en op het `public`-schema ervan.

### Toegang of wachtwoord van een gebruiker wijzigen

Klik op **Bewerken** naast een gebruiker. Wijzig de aangevinkte databases onder **Toegang tot**, of vul een nieuw **Wachtwoord** in. Laat het wachtwoord leeg om het huidige te houden. Klik op **Opslaan**: Vimonto Deploy haalt de oude rechten van de gebruiker weg en geeft toegang tot precies de databases die nu zijn aangevinkt. De systeemgebruiker is de uitzondering: die krijgt alleen een nieuw wachtwoord, zoals hierboven beschreven.

## Databases ophalen die op de server zijn gemaakt

Databases die buiten Vimonto Deploy zijn gemaakt, bijvoorbeeld door een migratie, een herstel of met de hand in de [terminal](https://ops.vimonto.com/docs/nl/servers/terminal), verschijnen niet vanzelf. Klik op **Ophalen van server** om ze aan de lijst toe te voegen. Vimonto Deploy leest de databases op de server, slaat de eigen systeemdatabases van de engine over en voegt elke nieuwe toe. Daarna kun je gebruikers er toegang toe geven en ze opnemen in [back-ups](https://ops.vimonto.com/docs/nl/servers/backups).

Alleen databases met een naam van letters, cijfers en underscores worden opgehaald. Gebruikers die buiten Vimonto Deploy zijn gemaakt, worden niet opgehaald.

## Verbinding maken met een database

Het onderdeel **Verbinden** toont de gegevens voor je databaseclients en applicaties:

| Veld | Wat het is |
| --- | --- |
| **Host** | Het privé-IP-adres van de server als die er een heeft, anders het publieke IP-adres. |
| **Poort** | 3306 voor MySQL en MariaDB, 5432 voor PostgreSQL. |
| **SSH-tunnel** | Een kant-en-klaar commando om de database vanaf je eigen computer te bereiken. |
| **Verbindings-URL** | Het URL-formaat om te gebruiken, met je gebruiker, wachtwoord en database ingevuld. |

### Vanaf een site op dezelfde server

Een site op dezelfde server maakt verbinding met `127.0.0.1` op de poort van de engine, met een databasegebruiker en het bijbehorende wachtwoord. Zet deze waarden in de [omgeving](https://ops.vimonto.com/docs/nl/sites/environment) van de site, voor een Laravel-applicatie `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME` en `DB_PASSWORD`.

### Vanaf je eigen computer via een SSH-tunnel

De databasepoort is niet open naar het internet. Wil je een desktopclient gebruiken, zoals TablePlus, DBeaver of MySQL Workbench? Open dan een SSH-tunnel met de systeemgebruiker, met een [SSH-sleutel](https://ops.vimonto.com/docs/nl/connections/ssh-keys) die op de server staat:

```bash
ssh -L 3306:127.0.0.1:3306 vimonto@203.0.113.10
```

Zolang de tunnel open is, verbind je je client met `127.0.0.1` op poort 3306 (5432 voor PostgreSQL), met een databasegebruiker en het bijbehorende wachtwoord. De meeste databaseclients kunnen de SSH-tunnel ook zelf openen: vul het IP-adres van de server, de gebruiker `vimonto` en je privésleutel in bij de SSH-instellingen van de client.

### Vanaf andere servers

Op een aparte databaseserver luistert de engine op alle netwerkinterfaces, zodat web- en workerservers ermee kunnen verbinden. Staat de databaseserver in een [privénetwerk](https://ops.vimonto.com/docs/nl/servers/server-types#servers-in-een-privénetwerk), dan staat het inrichten poort 3306 (of 5432) al toe vanaf het adresbereik van dat netwerk: verbind je andere servers in het netwerk met het privé-IP-adres van de databaseserver, zonder extra regel. Wil je van ergens anders verbinden, zoals vanaf een server buiten het netwerk of een vast openbaar IP-adres, voeg dan zelf op de pagina [netwerk](https://ops.vimonto.com/docs/nl/servers/network) een regel toe voor die poort vanaf dat adres. Een databaseserver zonder privénetwerk accepteert geen verbindingen van andere servers tot je zo'n regel toevoegt.

Op een app-server luisteren MySQL en MariaDB alleen op de server zelf, en PostgreSQL alleen op `localhost`. Gebruik een SSH-tunnel om die van elders te bereiken.

> [!WARNING]
> Sta de databasepoort nooit voor iedereen open. Beperk firewallregels tot de adressen van je eigen servers.

## Een database of gebruiker verwijderen

Klik op **Verwijderen** naast een database, typ ter bevestiging de naam en klik op **Database verwijderen**. De database en alle gegevens erin worden definitief verwijderd.

Klik op **Verwijderen** naast een gebruiker en bevestig met **Gebruiker verwijderen**. Applicaties die met deze gebruiker verbinden, kunnen hun database dan niet meer bereiken. Op PostgreSQL worden objecten van de gebruiker mee verwijderd.

> [!WARNING]
> Een database verwijderen kun je niet ongedaan maken. Maak eerst een [back-up](https://ops.vimonto.com/docs/nl/servers/backups) als je de gegevens misschien nog nodig hebt.

## Veelgestelde vragen

### Waar vind ik het databasewachtwoord?

Vimonto Deploy bewaart geen wachtwoorden van databasegebruikers die je aanmaakt; die kies of genereer je zelf. Ben je er een kwijt? Klik op **Bewerken** naast de gebruiker, stel een nieuw wachtwoord in en werk de applicaties bij die het gebruiken. Het wachtwoord van de systeemgebruiker wordt na het inrichten één keer getoond.

### Kan een databasegebruiker bij meer dan één database?

Ja. Vink onder **Toegang tot** elke database aan die de gebruiker nodig heeft. Een gebruiker zonder aangevinkte databases kan inloggen, maar geen enkele database gebruiken.

### Waarom kan mijn andere server geen verbinding maken met de database?

Controleer drie dingen: de database draait op een aparte databaseserver (een app-server accepteert alleen lokale verbindingen), de firewall van de databaseserver staat de poort toe vanaf de andere server (binnen een privénetwerk gebeurt dat vanzelf, voor andere adressen voeg je zelf een regel toe), en je verbindt met het privé-IP-adres als beide servers in hetzelfde privénetwerk zitten.

### Ondersteunt Vimonto Deploy hier ook Redis of MongoDB?

Nee. Deze pagina beheert MySQL, MariaDB en PostgreSQL. Redis wordt als service geïnstalleerd op app-servers en cacheservers; zie [services](https://ops.vimonto.com/docs/nl/servers/services).
