PmaControl logo PmaControl
  • Accueil
  • PmaControl
    • Agents IA 13 agents on-premise
    • Nos offres Community, Cloud, On-Premise, Premium
    • Documentation Guides, API, architecture
    • Changelog Toutes les versions stables 5.x
    • Marketplace Plugins communautaires
    • Clients 28+ entreprises
    • FAQ 25 questions / 7 catégories
    Bases de données
    • MariaDB 35 articles
    • MySQL 15 articles
    • Galera Cluster 6 articles
    • MaxScale 4 articles
    • ProxySQL 3 articles
    • Amazon Aurora MySQL 0 article
    • Azure Database 0 article
    • ClickHouse 0 article
    • GCP CloudSQL 0 article
    • Percona Server 0 article
    • SingleStore 0 article
    • TiDB 0 article
    • Vitess 0 article
    Solutions
    • Support 24×7 Urgences MariaDB & MySQL
    • Observabilité SQL Monitoring, alertes, topologie
    • Haute disponibilité Réplication, failover, Galera
    • Disaster Recovery Backup, restore, RPO/RTO
    • Sécurité & conformité Audit, RGPD, SOC2
    • Migration & upgrade Zero downtime, pt-osc, gh-ost
  • Nos offres
  • Ressources
    • Documentation Guides techniques & API
    • Centre d'optimisation MySQL Index Markdown, métriques, paramètres, incidents
    • FAQ 25 questions fréquentes
    • Témoignages Retours clients & cas d'usage
    • Blog Articles & insights
    • Roadmap Fonctionnalités à venir
    Domaines d'expertise
    • Observabilité SQL Monitoring, alertes, topologie Dot3
    • Haute disponibilité Réplication, failover, Galera
    • Sécurité & conformité Audit, RGPD, SOC2, ISO 27001
    • Disaster Recovery Backup, restore, RPO/RTO
    • Performance & optimisation Digests, EXPLAIN, tuning
    • Migration & upgrade Zero downtime, pt-osc
    Liens rapides
    • Wiki GitHub 26 pages — install, engine, plugins
    • Code source Repository GitHub officiel
    • Support 24×7 Urgences MariaDB & MySQL
    • Réserver une démo 30 min — architecture réelle
  • Support 24×7
  • Réserver une démo
Réserver une démo
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
Ressources › Centre d'optimisation MySQL › Security checks MySQL

Security checks MySQL

Documentation Markdown structurée pour diagnostiquer, mesurer et optimiser MySQL.

Cette page est une documentation originale PmaControl. Elle reprend une structure d'index pratique pour travailler sur l'optimisation MySQL, sans copier de contenu tiers ni dépendre d'un produit externe.

Objectif

Les security checks MySQL réduisent la surface d'attaque: comptes trop puissants, connexions non chiffrées, mots de passe faibles, privilèges globaux inutiles et exposition réseau.

Contrôles prioritaires

  • Comptes anonymes ou comptes sans mot de passe.
  • Utilisateurs avec SUPER, FILE, PROCESS, GRANT OPTION ou droits globaux injustifiés.
  • Accès % quand un hôte précis suffit.
  • TLS non imposé pour les flux sensibles.
  • local_infile activé sans besoin.
  • Binlogs et backups lisibles par des comptes système trop larges.

SQL de base

SELECT user, host, account_locked, password_expired
FROM mysql.user
ORDER BY user, host;

SHOW GRANTS FOR 'app_user'@'%';

A retenir

Le principe est simple: chaque privilège doit avoir un propriétaire, une justification et une durée de vie.

Définir le périmètre et collecter les comptes

Inventoriez serveurs, proxies, comptes applicatifs, administrateurs, réplicas et outils de sauvegarde. Associez chaque compte à un responsable et à son hôte source prévu. Les colonnes de comptes ci-dessous concernent MySQL ; MariaDB stocke ces informations différemment selon sa version. Utilisez un compte d’audit dûment autorisé et n’exportez ni empreintes de mots de passe ni secrets dans les rapports.

SELECT VERSION() AS server_version,
       CURRENT_USER() AS matched_account, USER() AS connection_identity;

SELECT user, host, plugin, account_locked, password_expired, ssl_type
FROM mysql.user
ORDER BY user, host;

SELECT grantee, privilege_type, is_grantable
FROM information_schema.user_privileges
ORDER BY grantee, privilege_type;

CURRENT_USER() identifie le compte utilisé pour les privilèges ; USER() décrit l’identité de connexion. L’inventaire global ne suffit pas : examinez SHOW GRANTS pour privilèges de base/table, privilèges dynamiques et rôles attribués, y compris rôles par défaut/actifs. Une chaîne d’authentification vide ne prouve pas un compte non sécurisé, car les plugins diffèrent. Vérifiez plugin, restriction d’hôte, verrouillage et politique réelle.

Vérifier le transport de la connexion réelle

SHOW GLOBAL VARIABLES WHERE Variable_name IN (
  'require_secure_transport', 'tls_version', 'local_infile',
  'secure_file_priv', 'bind_address', 'port'
);
SHOW SESSION STATUS WHERE Variable_name IN ('Ssl_cipher', 'Ssl_version');

Les champs TLS de session décrivent cette connexion seulement. Un socket Unix peut être un transport local sécurisé valide sans cipher TLS. En TCP, vérifiez chiffrement et validation du certificat/nom d’hôte dans le pilote applicatif. Si le proxy termine TLS, testez chaque segment : client-proxy et proxy-serveur. Accepter TLS côté serveur ne signifie pas que tous les clients l’imposent.

mysql --host=db.example --user=app_reader --password \
  --ssl-mode=VERIFY_IDENTITY --ssl-ca=/path/to/ca.pem

Cet exemple de client MySQL demande le mot de passe et vérifie l’identité ; remplacez hôte et chemin CA. Pour un autre client, vérifiez ses options propres. Planifiez la rotation des certificats et testez de nouvelles connexions applicatives avant d’imposer la politique, afin que des sessions existantes ne masquent pas un échec à la reconnexion.

Examiner l’exposition au-delà des privilèges SQL

Contrôle Preuve à conserver
Accès réseau Écoute, pare-feu et accès depuis les sources prévues
Fichiers et sauvegardes Permissions, chiffrement, garde des clefs et accès restauration
Audit et secrets Journaux protégés, rétention, rotation des secrets et retrait des comptes obsolètes

Appliquez le moindre privilège par fonction : séparez trafic applicatif, migrations, supervision et sauvegarde. Testez retraits de droits et restrictions d’hôte avec de nouvelles connexions, conservez les grants initiaux pour revenir en arrière et surveillez les refus. Mettez à jour serveur et connecteurs par une procédure documentée ; les plugins d’authentification dépendent des versions. Chaque constat doit avoir responsable, échéance de correction et résultat vérifié.

Poursuivre le diagnostic

  • Intégrez les constats à l’évaluation et vérifiez l’exploitation avec les contrôles de santé.

Références officielles

  • MySQL encrypted connections
  • MySQL SHOW GRANTS
PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
Mentions légales GitHub Contact
N'attendez pas l'incident pour comprendre votre architecture. © 2014-2026 PmaControl — 68Koncept