Maison  >  Article  >  base de données  >  Explication détaillée des autorisations dans MySQL

Explication détaillée des autorisations dans MySQL

小云云
小云云original
2018-01-13 13:29:591472parcourir

Cet article présente principalement les autorisations dans MySQL, y compris les transactions que chaque autorisation peut effectuer et quelques instructions de commande courantes pour les autorisations d'exploitation. Les amis dans le besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.

1. Avant-propos

De nombreux articles diront que les autorisations de la base de données sont basées sur le principe des moindres autorisations. Cette phrase en elle-même n'est pas fausse, mais elle l'est. un discours vide de sens. En raison des autorisations minimales, cette chose est trop abstraite et, souvent, vous ne savez pas exactement de quelles autorisations elle a besoin. De nos jours, de nombreuses opérations MySQL utilisent des comptes root. Ce n'est pas que tout le monde ne sache pas que l'utilisation des autorisations root est trop dangereuse, mais que beaucoup de gens ne savent pas quels types d'autorisations doivent être accordées pour être à la fois sûres et garantir un fonctionnement normal. Par conséquent, cet article porte davantage sur la façon dont nous pouvons simplement configurer un MySQL sécurisé dans ce cas. Remarque : L'environnement de test de cet article est mysql-5.6.4
2. Introduction aux autorisations Mysql

Il existe 4 tables qui contrôlent les autorisations dans MySQL, à savoir la table utilisateur, la base de données table, table tables_priv, table colonnes_priv.

Le processus de vérification de la table d'autorisation mysql est le suivant :

1. Tout d'abord, déterminez si l'adresse IP, le nom d'utilisateur et le mot de passe connectés existent à partir des trois champs Hôte, Utilisateur et Mot de passe dans la table utilisateur. S'il existe, il est vérifié.

2. Après avoir réussi l'authentification d'identité, attribuez les autorisations et vérifiez dans l'ordre utilisateur, base de données, tables_priv, colonnes_priv. Autrement dit, vérifiez d'abord l'utilisateur de la table d'autorisation globale. Si l'autorisation correspondante dans l'utilisateur est Y, alors l'autorisation de cet utilisateur sur toutes les bases de données est Y, et db, tables_priv, columns_priv ne seront plus vérifiées si elle est N, alors vérifiez ceci ; dans la table db La base de données spécifique correspondant à l'utilisateur, et obtient l'autorisation Y dans la base de données ; si l'autorisation dans la base de données est N, vérifier la table spécifique correspondant à la base de données dans tables_priv et obtenir l'autorisation Y dans la table, et bientôt.

3. De quelles autorisations MySQL dispose-t-il

201557120429872.jpg (698×734)

201557120509083.jpg (702×342)

4. Analyse des autorisations au niveau de la base de données (table db)

201557120536129.jpg (699×737)

5. Plan de configuration de la sécurité MySQL

1 limitation L'adresse IP qui accède au port mysql

Windows peut être restreint via le pare-feu Windows ou ipsec, et Linux peut être restreint via iptables.

2 Modifier le port de mysql

Vous pouvez modifier le fichier de configuration my.ini sous windows, et vous pouvez modifier le fichier de configuration my.cnf sous linux.

3 Définissez des mots de passe forts pour tous les utilisateurs et spécifiez strictement l'adresse IP d'accès du compte correspondant

Dans MySQL, l'adresse IP d'accès de l'utilisateur peut être spécifiée dans la table des utilisateurs

4 privilèges root Traitement du compte

Il est recommandé de définir un mot de passe fort pour le compte root et de spécifier que seule la connexion locale est autorisée

5 Traitement des journaux

Si nécessaire, vous pouvez activez le journal des requêtes, qui sera enregistré les instructions de connexion et de requête.

6 processus mysql exécutant un compte

Il est interdit d'utiliser le système local pour exécuter un compte mysql sous Windows. Vous pouvez envisager d'utiliser le service réseau ou de créer vous-même un nouveau compte, mais vous devez accorder un accès en lecture. dans le répertoire où se trouve le programme mysql. Prenez les autorisations et les autorisations de lecture et d'écriture du répertoire de données ; Sous Linux, créez un nouveau compte mysql et spécifiez mysql à exécuter en tant que compte mysql lors de l'installation, et accordez les autorisations de lecture au répertoire. où se trouve le programme et les autorisations sur le répertoire où se trouvent les données. Autorisations de lecture et d'écriture.

7 Autorisations de disque du compte mysql en cours d'exécution

1) Le compte mysql en cours d'exécution doit donner des autorisations de lecture sur le répertoire où se trouve le programme, ainsi que des autorisations de lecture et d'écriture sur les données répertoire
2) Non Permet d'accorder des autorisations d'écriture et d'exécution à d'autres répertoires, notamment ceux contenant des sites Web.
3) Annulez les autorisations d'exécution du compte mysql en cours d'exécution pour cmd, sh et d'autres programmes.

8 Comment gérer le compte mysql utilisé par le site Web

Créez un nouveau compte et donnez au compte toutes les autorisations dans la base de données utilisée. Cela peut non seulement garantir que le site Web peut exploiter toutes les bases de données correspondantes, mais également garantir que le compte n'affectera pas la sécurité en raison d'autorisations excessives. Un compte disposant de toutes les autorisations sur une seule base de données n'aura pas d'autorisations de super, de processus, de fichier et autres autorisations de gestion. Bien sûr, si je peux savoir clairement quelles autorisations mon site Web nécessite, il est préférable de ne pas donner plus d'autorisations, car souvent l'éditeur ne sait pas quelles autorisations le site Web nécessite, je recommande donc uniquement la configuration ci-dessus. Et ce que je veux dire est général. Plus précisément, lorsqu'il n'y a que quelques machines, et pas beaucoup, je recommande personnellement de donner uniquement les autorisations nécessaires. Pour des suggestions spécifiques, veuillez vous référer au tableau ci-dessus.

9 Supprimer les bases de données inutiles

La base de données de test a des autorisations par défaut pour les comptes nouvellement créés
6. Analyse et mesures de prévention des intrusions MySQL et des élévations de privilèges

De manière générale, il existe plusieurs façons d'élever les privilèges MySQL :

1 élévation de privilèges UDF

La clé de cette méthode est d'importer un fichier dll. Personnellement, je pense que tant que les autorisations d'écriture du compte de processus sur le répertoire sont raisonnablement contrôlées, l'importation du fichier dll peut être empêchée et s'il est violé ; , tant que les autorisations du compte de processus sont suffisamment faibles et qu'il est impossible d'effectuer des opérations à haut risque, telles que l'ajout de comptes, etc.

2 Écrivez le fichier de démarrage

Cette méthode est la même que ci-dessus, mais vous devez toujours contrôler raisonnablement l'autorisation d'écriture du compte de processus dans le répertoire.

3 Lorsque le compte root est divulgué

Si le compte root n'est pas correctement géré et que le compte root est envahi, les informations de la base de données ne seront certainement pas garanties. Cependant, si les autorisations du compte de processus et ses autorisations sur le disque sont contrôlées, le serveur peut toujours garantir qu'il ne sera pas compromis.

4 Fuites de comptes ordinaires (comme mentionné ci-dessus, comptes qui n'ont toutes les autorisations que pour une certaine bibliothèque)

Le compte ordinaire mentionné ici fait référence au compte utilisé par le site Web que je vais vous donner. une comparaison Une suggestion pratique consiste simplement à donner toutes les autorisations à une bibliothèque spécifique. La fuite de compte inclut l’injection et l’accès direct aux mots de passe des comptes de base de données une fois le serveur Web compromis.

Pour le moment, les données de la base de données correspondantes ne sont pas protégées, mais elles ne menaceront pas les autres bases de données. De plus, le compte ordinaire ici ne dispose pas d'autorisations de fichiers et ne peut pas exporter de fichiers sur le disque. Bien entendu, les autorisations du compte de processus seront toujours strictement contrôlées à ce stade.

Consultez le tableau ci-dessus pour connaître les types d'autorisations accordées aux comptes ordinaires. Il n'est vraiment pas possible d'accorder directement toutes les autorisations à une bibliothèque.
7. Commandes courantes requises pour la configuration de la sécurité

1. Créez un nouvel utilisateur et accordez des autorisations à la base de données correspondante


 grant select,insert,update,delete,create,drop privileges on database.* to user@localhost identified by 'passwd';


 grant all privileges on database.* to user@localhost identified by 'passwd';

2. Actualiser les autorisations


flush privileges;

3. Afficher l'autorisation


show grants;

4. Supprimer l'autorisation


revoke delete on *.* from 'jack'@'localhost';

5. Supprimer l'utilisateur


drop user 'jack'@'localhost';

6. Changer le nom de l'utilisateur


rename user 'jack'@'%' to 'jim'@'%';

7. Changer le mot de passe de l'utilisateur


SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

8 . Supprimer la base de données


drop database test;

9. Exporter les fichiers de la base de données


select * from a into outfile "~/abc.sql"

Recommandations associées :

Explication détaillée des autorisations et de la sécurité MySQL

Fonctionnement du système d'autorisations Mysql

Gestion des autorisations MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn