Een adresboek in een spreadsheet werkt prima, totdat je het wil koppelen aan andere scripts of automatiseringen. Een eenvoudige MySQL-database geeft je meer flexibiliteit — en het is een goede manier om vertrouwd te raken met databases en Bash-scripting.

In dit voorbeeld draait de database op een Synology NAS met MariaDB, maar het werkt op elke MySQL/MariaDB-instantie.

De volledige code staat op GitHub: github.com/siekman-io/contacten


Vereisten

  • MySQL-client op je machine (macOS, Linux)
  • Een draaiende MySQL of MariaDB server
  • Een gebruiker met rechten om databases aan te maken

MySQL-client installeren op macOS

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew update
brew install mysql-client

Verbinding testen

Controleer eerst of je verbinding kunt maken met de database:

mysql -u gebruikersnaam -p -h 10.0.0.1

Vervang 10.0.0.1 door het IP van je server (of localhost als de database lokaal draait).

MySQL terminal verbinding met MariaDB op 10.0.0.1

Als je de mysql> prompt ziet, is de verbinding in orde. Verlaat de client met exit.


Projectstructuur opzetten

Maak een map aan voor de scripts en configuratie:

mkdir ~/contacten
cd ~/contacten

De map bevat vier bestanden:

contacten/
├── config          # databasegegevens
├── contacten.sql   # tabelschema
├── create_db.sh    # database aanmaken
└── add-contact.sh  # contact toevoegen

Configuratiebestand

Maak een bestand config aan met je databasegegevens:

#!/bin/bash
HOST=10.0.0.1
DB=adresboek
TABLE=adresboek
USER=gebruikersnaam
PASSWORD=wachtwoord

Database schema

Maak contacten.sql aan met de tabelstructuur:

CREATE TABLE adresboek (
    ID            INT AUTO_INCREMENT PRIMARY KEY,
    Voornaam      VARCHAR(50),
    Tussenvoegsel VARCHAR(20),
    Achternaam    VARCHAR(50),
    Straatnaam    VARCHAR(100),
    Huisnummer    VARCHAR(10),
    Postcode      VARCHAR(10),
    Woonplaats    VARCHAR(50),
    Land          VARCHAR(50)
);

Database aanmaken

Maak create_db.sh aan:

#!/bin/bash
source config
mysql -u$USER -p$PASSWORD -h $HOST -e "CREATE DATABASE $DB"
mysql -u$USER -p$PASSWORD -h $HOST $DB < contacten.sql
echo "Database aangemaakt."

Geef uitvoerrechten en draai het script:

chmod +x create_db.sh
sh create_db.sh

Contact toevoegen

Maak add-contact.sh aan. Dit script vraagt interactief om de gegevens en schrijft ze naar de database:

#!/bin/bash
source config

read -p "Voornaam:      " voornaam
read -p "Tussenvoegsel: " tussenvoegsel
read -p "Achternaam:    " achternaam
read -p "Straatnaam:    " straatnaam
read -p "Huisnummer:    " huisnummer
read -p "Postcode:      " postcode
read -p "Woonplaats:    " woonplaats
read -p "Land:          " land

mysql -u$USER -p$PASSWORD -h $HOST $DB -e "
INSERT INTO $TABLE
  (Voornaam, Tussenvoegsel, Achternaam, Straatnaam, Huisnummer, Postcode, Woonplaats, Land)
VALUES
  ('$voornaam','$tussenvoegsel','$achternaam','$straatnaam','$huisnummer','$postcode','$woonplaats','$land')
"
echo "Contact opgeslagen."
chmod +x add-contact.sh
sh add-contact.sh

add-contact.sh script met interactieve invoer voor een contactpersoon


Resultaat

Na het toevoegen van een contact kun je de data controleren via phpMyAdmin of direct via de terminal:

mysql -u$USER -p$PASSWORD -h $HOST $DB -e "SELECT * FROM adresboek;"

phpMyAdmin met het ingevoerde contact in de adresboek-tabel


Volgende stappen

Dit is een bewuste beginopzet. Uitbreidingsmogelijkheden:

  • list-contacts.sh — alle contacten tonen met filtering
  • search-contact.sh — zoeken op naam of postcode
  • delete-contact.sh — verwijderen op ID
  • Wachtwoord uit config halen en via .my.cnf regelen zodat het niet in platte tekst staat
// veelgestelde vragen
Werkt dit ook op een Synology NAS?

Ja, Synology DSM heeft een ingebouwde MariaDB-package. Installeer die via Package Center, zet remote verbindingen aan en gebruik het IP van je NAS als host.

Heb ik phpMyAdmin nodig?

Nee, phpMyAdmin is optioneel — handig om de data te controleren. De scripts werken puur via de command line.

Kan ik de scripts aanpassen voor andere velden?

Ja, pas het SQL-schema aan in contacten.sql en voeg de bijbehorende vragen toe in add-contact.sh.

Dit artikel lezen in het Engels?

Read in English →