« PI MariaDB » : différence entre les versions
mAucun résumé des modifications |
|||
| Ligne 131 : | Ligne 131 : | ||
</syntaxhighlight>La base de donnée tourne de nouveau sur <code>/mnt/disk/mariadb</code>. | </syntaxhighlight>La base de donnée tourne de nouveau sur <code>/mnt/disk/mariadb</code>. | ||
== Configuration == | |||
=== Sécurisation === | |||
<syntaxhighlight lang="bash"> | |||
sudo mariadb | |||
</syntaxhighlight>Et on lance les commandes : | |||
Modification du user root.<syntaxhighlight lang="mysql"> | |||
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyPassword'; | |||
FLUSH PRIVILEGES; | |||
</syntaxhighlight>'''Ne pas oublier de changer le mot de passe!''' | |||
Supprimer les utilisateurs anonymes<syntaxhighlight lang="mysql"> | |||
DELETE FROM mysql.user WHERE User=''; | |||
FLUSH PRIVILEGES; | |||
</syntaxhighlight>Désactiver l’accès root distant<syntaxhighlight lang="mysql"> | |||
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; | |||
FLUSH PRIVILEGES; | |||
</syntaxhighlight>Supprimer la base de test<syntaxhighlight lang="mysql"> | |||
DROP DATABASE IF EXISTS test; | |||
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; | |||
FLUSH PRIVILEGES; | |||
</syntaxhighlight>Vérifier les privilèges:<syntaxhighlight lang="mysql"> | |||
SELECT Host, User FROM mysql.user; | |||
</syntaxhighlight>Qui doit donner :<syntaxhighlight lang="text"> | |||
+-----------+-------------+ | |||
| Host | User | | |||
+-----------+-------------+ | |||
| localhost | mariadb.sys | | |||
| localhost | mysql | | |||
| localhost | root | | |||
+-----------+-------------+ | |||
3 rows in set (0.004 sec) | |||
</syntaxhighlight> | |||
Version du 14 janvier 2026 à 23:14
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.
Configuration
Sécurisation
sudo mariadb
Et on lance les commandes : Modification du user root.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyPassword';
FLUSH PRIVILEGES;
Ne pas oublier de changer le mot de passe! Supprimer les utilisateurs anonymes
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
Désactiver l’accès root distant
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
FLUSH PRIVILEGES;
Supprimer la base de test
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
Vérifier les privilèges:
SELECT Host, User FROM mysql.user;
Qui doit donner :
+-----------+-------------+
| Host | User |
+-----------+-------------+
| localhost | mariadb.sys |
| localhost | mysql |
| localhost | root |
+-----------+-------------+
3 rows in set (0.004 sec)