Beryl::Apply::MariadbSecure
Inherits Beryl::Apply::Primitive < Reference < Object
Primitive mariadb-secure : durcit un MariaDB fraîchement installé —
l'équivalent automatisé et idempotent de mysql_secure_installation :
skip-networking(plus d'écoute TCP, socket Unix seul) ;- mot de passe root (SANS casser l'auth
unix_socketde l'OS-root, pour que beryl puisse rejouer via le socket) ; - suppression des users anonymes et de la base
test.
Le mot de passe vient du COFFRE (ENV) — jamais dans la recette ni en
argv (SQL passé par fichier 0600, pas via -e).
- mariadb-secure:
root_password_env: MARIADB_ROOT_PASSWORD
socket: /var/run/mysql/mysql.sock # optionnel
conf_path: /usr/local/etc/mysql/conf.d/zz-beryl-hardening.cnf # optionnel
service: mysql-server # optionnel (restart si conf posée)
Idempotence : état lu en LECTURE SEULE par le socket (OS-root), comparé ici — rien de secret n'est envoyé au serveur pour cette vérification :
- ligne
root@localhostdemysql.global_priv(JSON) :unix_socketprésent ET empreintemysql_native_passworddu mot de passe du coffre (calculée localement) ; - aucun user anonyme, pas de base
test; skip-networkingdansconf_path. Tout est déjà en place → Skipped (sinon « applied » à chaque passage, et lesservice-restart: { if_changed: true }qui suivent relançaient).
Constants
Class methods
SQL de durcissement. unix_socket OR mysql_native_password PRÉSERVE
l'accès OS-root par socket (donc les re-runs beryl marchent) tout en
posant un mot de passe. Pur, exposé pour test. Le mot de passe est
échappé pour SQL (' doublée).
Users anonymes : TOUS, quel que soit l'hôte. L'installation en crée
aussi un au nom de la machine (''@'too', vu le 8 nov. 2026), que
''@'localhost' / ''@'%' seuls laissaient en place. Bloc anonyme
MariaDB (WHILE … EXECUTE IMMEDIATE), d'où le DELIMITER du client :
un à la fois, relu à chaque tour, plutôt qu'un curseur sur la table que
chaque DROP USER modifie (un échec lève une erreur : pas de boucle
infinie).
Vrai si la sortie de state_query décrit un MariaDB déjà durci avec ce
mot de passe. L'ordre des méthodes dans le JSON (auth_or) varie selon
les versions : on cherche seulement leur présence. Pur.
Empreinte mysql_native_password (= PASSWORD() de MariaDB) :
* + SHA1(SHA1(mdp)) en hexadécimal majuscule. Pure.
Instance methods
params est le hash brut du step YAML (ex: {"packages" => [...]}),
déjà interpolé par l'Executor. context porte les infos
dérivées du host (cf. Context).
Nom kebab-case utilisé comme clé de step dans les recettes (« pkg-install », « service-enable », …).