Maison > Article > base de données > Introduction détaillée à la gestion des autorisations dans MySQL
Le système d'autorisation MySQL s'authentifie à travers les deux étapes suivantes :
Effectuez l'authentification de l'identité des utilisateurs connectés. Les utilisateurs légaux sont authentifiés et les utilisateurs illégaux se voient refuser la connexion.
Accordez les autorisations correspondantes aux utilisateurs légaux authentifiés, et les utilisateurs peuvent effectuer les opérations correspondantes sur la base de données dans le cadre de ces autorisations.
Dans le processus d'accès aux autorisations, cela implique principalement la table user et la table db sous la base de données mysql. La structure des données de la table utilisateur est la suivante :
La structure des données de la table db est la suivante :
Description de la table : Elle contient des colonnes utilisateur, colonnes d'autorisation, colonnes de sécurité et colonnes de contrôle des ressources. Les plus fréquemment utilisées sont la colonne utilisateur et la colonne autorisations. Les autorisations sont divisées en autorisations normales et autorisations de gestion. Opérations de base de données d'utilisateurs d'autorisations ordinaires telles que select_priv, insert_priv, etc. Les autorisations de gestion sont principalement utilisées pour gérer les opérations de base de données, telles que process_priv, super_priv, etc.
Lorsqu'un utilisateur se connecte, le processus d'accès à la table d'autorisation :
Déterminez d'abord l'adresse IP et l'utilisateur connectés à partir des trois champs d'hôte, d'utilisateur et de mot de passe dans la table utilisateur. le nom et le mot de passe existent dans la table, s'ils existent, la vérification est réussie, sinon la connexion est refusée.
Après avoir réussi l'authentification, obtenez les autorisations de la base de données dans l'ordre du tableau d'autorisations suivant : user->db->tables->priv->columns_priv. Les autorisations globales couvrent les autorisations locales. Par exemple, si un utilisateur dispose d'une autorisation de sélection dans la table utilisateur, il aura alors l'autorisation de sélection sur toutes les colonnes de toutes les tables de toutes les données.
Description détaillée de la recherche d'autorisation : lorsque l'utilisateur réussit l'authentification des autorisations, lors de l'attribution des autorisations, les autorisations sont attribuées dans l'ordre utilisateur->db->tables_priv->columns_priv, qui c'est-à-dire que les autorisations sont vérifiées en premier par l'utilisateur de la table, si l'autorisation correspondante dans la table utilisateur est Y, alors toutes les autorisations de base de données correspondant à l'utilisateur sont Y, et db, tables_priv et columns_priv ne seront plus vérifiées si c'est N, les autorisations de base de données spécifiques de l'utilisateur seront recherchées dans la table de base de données. Si vous obtenez l'autorisation Y dans la base de données, vous ne ferez pas de recherche. Sinon, vous vérifierez tables_priv pour voir les autorisations de table spécifiques correspondant à la base de données. Oui, vous ne rechercherez pas. Sinon, vous vérifierez la table columns_priv pour voir les autorisations de colonne spécifiques correspondantes. Ceci est important lorsque nous accordons des autorisations aux utilisateurs.
Pour créer un utilisateur, vous pouvez utiliser la syntaxe d'octroi pour créer ou exploiter directement la table des utilisateurs.
Méthode 1 :
Exploiter directement la table d'utilisation
insérer dans user(Host
,User
,Password
) valeurs("127.0.0.1","test",password("51testit" ) );
Méthode 2 :
Format CRÉER UN UTILISATEUR 'nom d'utilisateur'@'hôte' IDENTIFIÉ PAR 'mot de passe';
par exemple : CRÉER UN UTILISATEUR 'test'@'127.0.0.1' IDENTIFIÉ PAR '51testit';
Après la création, connectez-vous comme suit :
Méthode de cryptage MySQL : le cryptage MYSQL323 génère une chaîne de 16 bits, tandis que ce qui survit dans MySQLSHA1 est une chaîne de 41 bits . Parmi eux, n'est pas ajouté à l'opération de mot de passe proprement dite. On observe que de nombreux utilisateurs portent "", et le "*" est supprimé lors du processus de piratage proprement dit. Les chiffres du mot de passe crypté par MySQLSHA1 sont de 40 personnes.
Description du champ Hôte
La valeur Hôte peut être le nom d'hôte ou le numéro IP, ou locahost représente l'hôte local.
Vous pouvez utiliser les caractères génériques "%" et "_" devant la valeur de la colonne hôte. "%" signifie qu'une valeur d'hôte vide est égale à "%". . Par exemple, "%.myweb.com" correspond à tous les hôtes de tous les domaines mysql.com. Le cas est le suivant :
Host | User | 解析 |
---|---|---|
myweb.wang | pps | pps,从myweb.wang连接 |
% | pps | pps,从任何主机连接 |
% | ” | 任何用户,从任何主机连接 |
122.164.35.127 | pps | pps,从122.164.35.127连接 |
122.164.35.% | pps | pps,从122.164.35.类型子网的任何主机连接 |
Pour le test créé ci-dessus, je n'ai effectué aucune opération d'autorisation lorsque j'ai utilisé l'utilisateur de test pour faire fonctionner la base de données, j'ai trouvé :
Non. autorisations d'opération de base de données, comment puis-je vérifier les autorisations dont dispose un utilisateur ?
Afficher les autorisations
Première méthode :
afficher les autorisations pour test@127.0.0.1 ;
Méthode deux :
Afficher les autorisations enregistrées dans la table des utilisateurs.
sélectionnez * dans mysql.user où user='test' et host='127.0.0.1' G ;
Le format de syntaxe est le suivant suit :
accordez [privilege1|privilege2|all privilèges] sur dbName|.tableName ou à user@hostName
Lors de l'octroi de l'autorisation de sélection xxpt à l'utilisateur test :
grant select On xxpt.* to test.127.0.0.1;
La table db a changé et un nouvel enregistrement a été ajouté. Mais la table des utilisateurs n'a pas changé. Comme suit :
À l'heure actuelle, vous pouvez utiliser l'utilisateur test pour effectuer des opérations de requête de données, mais vous ne pouvez pas ajouter, supprimer ou modifier. Accordez-lui donc toutes les autorisations sur la base de données xxpt.
accordez tous les privilèges sur xxpt.* à test@127.0.0.1 ;
Les autorisations de test utilisateur sont les suivantes :
Vous pouvez mettre à jour les données à ce moment
Autorisations de gestion accorder sueper, process, file Accorder sueper, process, file On
. à 'test'@'127.0.0.1'; Le on dans l'instruction ne peut être suivi que de
. Remarque : l'autorisation d'utilisation est utilisée pour la connexion et ne peut effectuer aucune opération.
Pour révoquer les autorisations de lecture et d'écriture du test sur toutes les bases de données :
révoquer la sélection, insérer sur
. de test@127.0.0.1;
2. Utilisez le mot de passe défini pour test@127.0.0.1 =password('isayhello');
3. Passer l'utilisation de l'autorisation
autoriser l'utilisation sur
. pour 'tester' '@'127.0.0.1' identifié par 'isayhello' ; 4. Modifier directement la table utilisateur
mettre à jour l'ensemble d'utilisateurs Password=password("newpassword") où
*** ;
Autorisations |
Niveau d'autorisation Description de l'autorisation |
|
Base de données, table ou index |
Créer une base de données , autorisations de table ou d'index |
DROP |
base de données ou table |
Supprimer les autorisations de base de données ou de table |
OPTION D'OBTENTION |
Base de données, table ou programme enregistré | Accorder des options d'autorisation |
RÉFÉRENCES |
Base de données ou table |
|
ALTER |
Table |
Changement la table, comme l'ajout de champs, d'index, etc. | Autorisation de suppression des données|
Tableau | Autorisations d'indexation | |
Tableau | INSÉRER autorisations | |
Table | Autorisations de requête |
|
Tableau | MISE À JOUR DES AUTORISATIONS |
|
CRÉER UNE VUE |
Afficher | CRÉER DES AUTORISATIONS DE VUE |
AFFICHER LA VUE |
VUE |
Afficher les autorisations d'affichage |
ALTER ROUTINE |
Procédure de magasin |
CHANGER LES AUTORISATIONS DE LA PROCÉDURE STOCKÉE |
CRÉER UNE ROUTINE |
PROCÉDURE STOCKÉE |
CRÉER DES AUTORISATIONS DE PROCÉDURE STOCKÉE |
EXÉCUTER |
PROCÉDURE STOCKÉE |
Exécuter l'autorisation de procédure stockée |
FILE |
Accès aux fichiers sur l'hôte du serveur |
Droits d'accès aux fichiers |
CRÉER DES TABLES TEMPORAIRES |
Gestion du serveur |
Créer des autorisations de table temporaires |
VERROUILLER LES TABLES |
Gestion du serveur |
Autorisation de verrouillage de la table |
CRÉER UN UTILISATEUR |
Gestion du serveur |
CRÉER DES AUTORISATIONS UTILISATEUR |
PROCESSUS |
Gestion du serveur |
Afficher les autorisations de processus |
RELOAD |
Gestion du serveur |
Autorisation d'exécuter des commandes de vidage, de journaux de vidage, de privilèges de vidage, de statut de vidage, de tables de vidage, de threads de vidage, d'actualisation, de rechargement et d'autres commandes |
CLIENT DE RÉPLICATION |
Gestion du serveur |
Autorisations de copie |
ESCLAVE DE RÉPLICATION |
Gestion du serveur |
Autorisations de copie |
AFFICHER LES BASES DE DONNÉES |
Gestion du serveur |
Afficher les autorisations de la base de données |
ARRÊT |
Gestion du serveur |
Fermer les autorisations de la base de données |
SUPER |
Gestion du serveur |
Exécuter l'autorisation de tuer le thread |
Comment les autorisations MYSQL sont distribuées, c'est-à-dire quelles autorisations peuvent être définies pour les tables, quelles autorisations peuvent être définies pour les colonnes, etc. Cela peut être expliqué à partir d'un tableau dans la documentation officielle :
权限分布 |
可能的设置的权限 |
表权限 |
‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’ |
列权限 |
‘Select’, ‘Insert’, ‘Update’, ‘References’ |
过程权限 |
‘Execute’, ‘Alter Routine’, ‘Grant’ |
Distribution des autorisations