PI MariaDB

De knowledge
Aller à la navigation Aller à la recherche

On commence par créer une carte SD avec le dernier Raspberry OS, sans le "desktop", sans réseau WLAN et avec un user admin qui accepte une clé du serveur front-router.

On lui donnera le nom database

On le déclare en IP fixe sur le routeur.

On branche la carte SD sur le serveur et on le lance.

Installation de base

Depuis le routeur on copie le fichier : basic-install.sh

scp basic-install.sh database:.

Normalement le mot de passe n'est pas demandé. Si c'est le cas c'est que la bonne clé n'a pas été donnée au moment de la création de la carte SD de boot. On se logue sur le serveur:

ssh database

On lance le script :

basic-install.sh

Ca réalise les MAJ apparue depuis la création de l'image SD utilisée (pas grand chose à faire si la carte SD a été crée quelques minutes avant). Une clé est crée (par exemple):

The key fingerprint is:
SHA256:AiJTDFesFI0zGL+Of7RIpKs2BIeJ1g+5TruVrDoy+TY admin@database
The key's randomart image is:
+---[RSA 4096]----+
|o=+*.            |
|.+* o            |
|++++poui         |
|=++* .           |
|o+. + . D        |
|.+.oo..+         |
|o++o.=           |
|==Eo=            |
|==*=.            |
+----[SHA256]-----+
----------------------------------------------------------
-- public key to copy on git server ----------------------
----------------------------------------------------------
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAACAQCoff9D17Q9BDqVZP7cAZQZeRVOUSKwgEMUhOaArZxJWWEHACnRlMylRKiWqpjCYZBqBkbW06ckM7
vB3faayoAcN60AYS6cer7gwnTNY0VFC/LnfwnNFNaroO9HD9Ardrz7RQZtyQrW/xx8n2e6KwyfnGyjjLLQH08uOyfQXVo5NvEt+T5YdaP/
4jH+UYvI7pTAZz681FnT3NlE+wdl9HtjGI+s7c71eBqKUImMkxDIHFvvJFWL1WDnCYWL8qImLrVJ/aFdL5XATeDrncm3HFKqTBdP8sVjsn
nzCFGHGbEmM501dR4meKd+ORD05y//kX0T49XYzasdJtmzeiUz7Zbby7uMly5hkP5VovC46Pga+R2RbT3h4dILo78cQUlN2onc1Vl0+HVW
hkVJxkmRjASUraaGeFKjjK8mgzDHJy8NDt4N/xeE50Z8/mD1kZikO+5cIH+w5dGdf0yZmmNCvhMKxYzbmN08NCFdU6YWt1TziMHhHKjPi3
yfj4Yb1aui5FgJrBvQiy1/62LW7E5sTls+iOWlx6rEgFN7vad8obsjdmNErUACDJ216qwWdg69eFYVeR1BWVKGnhSa+lNmWtoWNHw5Q41L
qD1TlouWbdd8JZeJMrVT0DyXksQvdUXzuTF7/vsVFfI5n4LQgzCQj3dlJY21ibGf57+Ia4i9nvAOWPQ== admin@database
----------------------------------------------------------
Type <Return>

Il faut ajouter cette clé (de ssh-rsa jusqu'à admin@database) dans le .ssh/authorized_keys du user utilisée sur le serveur git.

Et on appuie sur return (Entrée)

Ca crée un dépôt local de notre repo "config" et ça crée un user remote avec peu de droits qui sera utilisé par les robots de collectes d'informations.

Cloning into 'config'...
The authenticity of host 'git.pilan (10.11.11.xx)' can't be established.
ED25519 key fingerprint is SHA256:3xkMU7nO7mr5wodfjUytf56glFu40dWMyAdWHB8yYl8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'git.pilan' (ED25519) to the list of known hosts.
remote: Enumerating objects: 71, done.
remote: Counting objects: 100% (71/71), done.
remote: Compressing objects: 100% (67/67), done.
remote: Total 71 (delta 28), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (71/71), 9.20 KiB | 1.84 MiB/s, done.
Resolving deltas: 100% (28/28), done.
[OK] Common env is OK
[OK] Utilisateur absent
[OK] Path /home/remote not already exists
[OK] Execution useradd
[OK] User remote created
[OK] Execution mkdir
[OK] Execution chown
[OK] chmod home dir
[OK] Create .ssh
[OK] chown .ssh
[OK] Creation .ssh/authorized_keys
[OK] chown .ssh/authorized_keys
[OK] chmod .ssh/authorized_keys
[OK] add router key

Comme on se connecte pour la première fois au serveur git ca demande une confirmation. On réponds yes.

Le reste se déroule normalement et on ne dois avoir que des [OK].

Installation du moteur de base de donnée

sudo apt install -y mariadb-server

Et c'est fait !

En revanche si on tente d'utiliser la base:

mariadb
ERROR 1698 (28000): Access denied for user 'admin'@'localhost'

Aucun utilisateur n'existe donc... on ne peut pas l'utiliser. On remarque qu'en tant que root, ça marche :

sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.11.11-MariaDB-0+deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Ca marche mais c'est pas comme ça que ça devrait être pour avoir une sécurité correcte!

Changement du file system de la base

Moi j'ai un disque externe que je veux utiliser. Il est reconnu comme /dev/sda1.

On rajoute une ligne a /etc/fstab

/dev/sda1   /mnt/disk   ext4   defaults   0   2

On reboote la machine pour vérifier que le volume se monte bien et on teste:

admin@database:~ $ df -h /mnt/disk/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       464G  169G  272G  39% /mnt/disk

Dans mon cas y'avait déjà des choses sur le disque mais y'a plus de 60% soit 272 Go de libre. Maintenant on crée un répertoire sur le disque et on y copie ce qui était sur

sudo mkdir /mnt/disk/mariadb
# stop the database server
sudo systemctl stop mariadb
# copy files to external drive
sudo rsync -av /var/lib/mysql/ /mnt/disk/mariadb/
# backup the old directory
sudo mv /var/lib/mysql /var/lib/mysql.bak
# create the symbolic link
sudo ln -s /mnt/disk/mariadb /var/lib/mysql
# restart database
sudo systemctl start mariadb

La base de donnée tourne de nouveau sur /mnt/disk/mariadb.