当前位置:网站首页>Mysql21 - gestion des utilisateurs et des droits

Mysql21 - gestion des utilisateurs et des droits

2022-07-06 10:37:00 Protégez - nous, Yao.

Un. . Gestion des utilisateurs

1.1. ConnexionMySQLServeur

DémarrageMySQLAprès le service,Peut passermysqlCommande pour se connecterMySQLServeur,Les ordres sont les suivants::

mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQLDéclarations"

Les paramètres de la commande sont détaillés ci - dessous:

  1. -hParamètres Suivi d'un nom d'hôte ou d'un hôteIP,hostnamePour l'hôte,hostIPPour l'hôteIP.
  2. -PParamètres À l'arrière.MySQLPort du Service,Connectez - vous au port spécifié par ce paramètre.MySQLLe port par défaut pour le service est3306,Connectez - vous automatiquement à3306Port,portPour le numéro de port de la connexion.
  3. -uParamètres Suivi d'un nom d'utilisateur,usernamePour le nom d'utilisateur.
  4. -pParamètres Un mot de passe est demandé.
  5. DatabaseNameParamètres Indique à quelle base de données se connecter.Sans ce paramètre,Se connectera directement àMySQLDans la base de données,Puis vous pouvez utiliserUSECommande pour sélectionner la base de données.
  6. -eParamètres Peut être ajouté directement à l'arrièreSQLDéclarations.ConnexionMySQLLe serveur exécutera ça plus tardSQLDéclarations,Et puis, sortez.MySQLServeur.
mysql -uroot -p -hlocalhost -P3306 mysql -e 'select user,host from user'

Insérer la description de l'image ici

1.2. Créer un utilisateur

CREATE USERLa syntaxe de base de l'énoncé est la suivante:

CREATE USER Nom d'utilisateur [IDENTIFIED BY 'Mot de passe'][,Nom d'utilisateur [IDENTIFIED BY 'Mot de passe']];
  • Le paramètre nom d'utilisateur représente le compte de l'utilisateur nouvellement créé,Par Utilisateurs(User) Et Nom d'hôte(Host) Composition;
  • “[ ]”Indique facultatif,C'est - à - dire,Vous pouvez spécifier que l'authentification par mot de passe est requise lorsque l'utilisateur se connecte,Vous pouvez également ne pas spécifier l'authentification par mot de passe,Pour que l'utilisateur puisse se connecter directement.Mais,La façon de ne pas spécifier le mot de passe n'est pas sûre,Non recommandé.Si vous spécifiez une valeur de mot de passe,Il faut utiliserIDENTIFIED BYSpécifier la valeur du mot de passe en texte clair.
  • CREATE USERL'instruction peut créer plusieurs utilisateurs en même temps.
create user 'zhang3' identified by '123456';# Par défauthost- Oui. %
create user 'kangshifu'@'localhost' identified by '123456';

Insérer la description de l'image ici

1.3. Modifier l'utilisateur

Modifier le nom d'utilisateur:

update mysql.user set user=li4 where user='kangshifu';
flush privileges;

Insérer la description de l'image ici

1.4. Supprimer l'utilisateur

Comment1:UtiliserDROPMéthode de suppression(Recommandations)
UtiliserDROP USERLorsqu'une instruction supprime un utilisateur,Doit être utilisé pourDROP USERAutorité.DROP USERLa syntaxe de base de l'énoncé est la suivante:

DROP USER user[,user]...;

Exemples:

DROP USER li4 ; # Suppression par défauthostPour%Utilisateurs de
DROP USER 'kangshifu'@'localhost';

Insérer la description de l'image ici
Comment2:UtiliserDELETEMéthode de suppression

DELETE FROM mysql.user WHERE Host=’hostname’ AND User=’username’;

Fin de la mise en œuvreDELETEAprès la commande, utilisezFLUSHCommande pour permettre à l'utilisateur de prendre effet,Les ordres sont les suivants::

FLUSH PRIVILEGES;

Attention!:Non recommandé DELETE FROM USER u WHERE USER=‘li4’ Supprimer,Il y aura des informations résiduelles dans le système.Etdrop userLa commande supprime l'utilisateur et les permissions correspondantes,Après avoir exécuté les ordres, vous verrez quemysql.userTable etmysql.dbLes enregistrements correspondants du tableau ont disparu.

1.5. Définir le mot de passe actuel de l'utilisateur

L'ancienne écriture est la suivante :

# Modifier le mot de passe de l'utilisateur actuel:(MySQL5.7Test valide)
SET PASSWORD = PASSWORD('123456');

Voici une introduction Formulation recommandée :

  1. UtiliserALTER USERCommande pour modifier le mot de passe actuel de l'utilisateur Les utilisateurs peuvent utiliserALTERCommande pour modifier son propre mot de passe,L'instruction suivante représente la modification du mot de passe de l'utilisateur actuellement connecté.La syntaxe de base est la suivante::
ALTER USER USER() IDENTIFIED BY 'new_password';
  1. UtiliserSETInstruction pour modifier le mot de passe actuel de l'utilisateur UtiliserrootConnexion utilisateurMySQLAprès,Peut être utiliséSETInstruction pour modifier le mot de passe,SpécifiqueSQLL'énoncé est le suivant:
SET PASSWORD='new_password';

Cette instruction crypte automatiquement le mot de passe avant de l'assigner à l'utilisateur actuel.

1.6. Modifier d'autres mots de passe d'utilisateur

  1. UtiliserALTERInstruction pour modifier le mot de passe d'un utilisateur normal Peut être utiliséALTER USERInstruction pour modifier le mot de passe d'un utilisateur normal.La syntaxe de base est la suivante::
ALTER USER user [IDENTIFIED BY 'Nouveau mot de passe']
[,user[IDENTIFIED BY 'Nouveau mot de passe']]...;
  1. UtiliserSETCommande pour modifier le mot de passe d'un utilisateur normal UtiliserrootL'utilisateur se connecte àMySQLAprès le serveur,Peut être utiliséSETInstruction pour modifier le mot de passe d'un utilisateur normal.SETLe Code de l'instruction est le suivant:
SET PASSWORD FOR 'username'@'hostname'='new_password';
  1. UtiliserUPDATEInstruction pour modifier le mot de passe d'un utilisateur normal(Non recommandé)
UPDATE MySQL.user SET authentication_string=PASSWORD("123456")
WHERE User = "username" AND Host = "hostname";

1.7. MySQL8Gestion des mots de passe(Compris.)

1.7.1. Politique d'expiration du mot de passe

  • InMySQLMoyenne,L'Administrateur de la base de données peut Réglage manuel Le mot de passe du compte expire,Vous pouvez également créer un Automatique Politique d'expiration du mot de passe.
  • La politique d'expiration peut être Global ,Ou pour Par numéro de compte Définir une politique d'expiration distincte.
ALTER USER user PASSWORD EXPIRE;
 alter user 'zhang3' password expire;
  • Comment①:UtiliserSQLL'instruction change la valeur de la variable et persiste
set persist default_password_lifetime =360; # Établir une politique globale,Définir le mot de passe tous les180Jours expirés
  • Comment②:Profilmy.cnfEntretien en cours
mysqld]
default_password_lifetime=180 #Établir une politique globale,Définir le mot de passe tous les180Jours expirés
  • Définir manuellement la méthode d'expiration du temps spécifié2:Paramètres individuels
    Chaque compte peut à la fois prolonger la politique globale d'expiration des mots de passe,La politique peut également être définie séparément.In CREATE USER Et ALTER USER Ajouter à la Déclaration PASSWORD EXPIRE Option pour mettre en place une politique distincte.Voici quelques exemples d'énoncés.
#ParamètreskangshifuNuméro de compte et mot de passe90Jours expirés:
CREATE USER 'kangshifu'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
#Définir le mot de passe n'expire jamais:
CREATE USER 'kangshifu'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE NEVER;
#Extension de la politique globale d'expiration des mots de passe:
CREATE USER 'kangshifu'@'localhost' PASSWORD EXPIRE DEFAULT;
ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE DEFAULT

1.7.2. Politique de réutilisation des mots de passe

  • Définir manuellement le mode de réutilisation du mot de passe1:Global
    Comment①:UtiliserSQL
SET PERSIST password_history = 6; #Les paramètres ne peuvent pas sélectionner les derniers6Mot de passe
SET PERSIST password_reuse_interval = 365; #Le réglage ne peut pas sélectionner un mot de passe au cours de la dernière année

Comment②:my.cnfProfil

[mysqld]
password_history=6
password_reuse_interval=365
  • Définir manuellement le mode de réutilisation du mot de passe2:Paramètres individuels
#Impossible d'utiliser le dernier5Mot de passe:
CREATE USER 'kangshifu'@'localhost' PASSWORD HISTORY 5;
ALTER USER 'kangshifu'@'localhost' PASSWORD HISTORY 5;
#Impossible d'utiliser le dernier365Mot de passe dans les jours:
CREATE USER 'kangshifu'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'kangshifu'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;
#Ni le plus proche5Mot de passe,Et ne peut pas être utilisé365Mot de passe dans les jours
CREATE USER 'kangshifu'@'localhost'
PASSWORD HISTORY 5
PASSWORD REUSE INTERVAL 365 DAY;

ALTER USER 'kangshifu'@'localhost'
PASSWORD HISTORY 5
PASSWORD REUSE INTERVAL 365 DAY;

2.. Gestion des droits

2.1. Liste des permissions

MySQLQuelles sont les permissions?

show privileges;

Insérer la description de l'image ici

  1. CREATEEtDROPAutorité ,Vous pouvez créer de nouvelles bases de données et tables,Ou supprimer(Enlevez - le.)Bases de données et tables existantes.SiMySQLDans la base de donnéesDROPPermission accordée à un utilisateur,L'utilisateur peut supprimerMySQLAccès à la base de données sauvegardée.
  2. SELECT、INSERT、UPDATEEtDELETEAutorité Autoriser l'exécution d'actions sur une table existante dans une base de données.
  3. SELECT Les permissions ne sont utilisées que lorsqu'elles récupèrent réellement les lignes d'un tableau .
  4. INDEXAutorité Autoriser la création ou la suppression d'index,INDEXPour les tableaux existants.Si vous avez un tableauCREATEAutorité,Juste là.CREATE TABLEInclure une définition d'index dans l'instruction.
  5. ALTERAutorité Peut être utiliséALTER TABLEPour changer la structure de la table et renommer la table.
  6. CREATE ROUTINEAutorité Pour créer un programme enregistré(Fonctions et programmes),ALTER ROUTINEPermissions utilisées pour modifier et supprimer les programmes enregistrés, EXECUTEAutorité Pour exécuter un programme enregistré.
  7. GRANTAutorité Autoriser l'autorisation à d'autres utilisateurs,Disponible dans la base de données、Tables et programmes enregistrés.
  8. FILEAutorité Permet à l'utilisateur d'utiliserLOAD DATA INFILEEtSELECT … INTO OUTFILEInstruction lire ou écrire des fichiers sur le serveur,Toute subvention accordéeFILELes utilisateurs autorisés peuvent lire ou écrireMySQLTout fichier sur le serveur(Description l'utilisateur peut lire des fichiers dans n'importe quel répertoire de base de données,Parce que le serveur a accès à ces fichiers).

2.2. Principe d'octroi des compétences

Les contrôles d'autorisation sont principalement effectués pour des raisons de sécurité,Il faut donc suivre les étapes suivantes Principe de l'expérience :

  1. Accorder seulement Autorisation minimale requise ,Empêcher les utilisateurs de faire de mauvaises choses.Par exemple, l'utilisateur a juste besoin d'une requête,Alors seulement pourselectLes permissions sont suffisantes.,Ne pas donner à l'utilisateurupdate、insertOudeleteAutorité.
  2. Lors de la création d'un utilisateur Limiter l'hôte de connexion de l'utilisateur ,Généralement limité à la désignationIPOu IntranetIPParagraphes.
  3. Pour chaque utilisateur Définir un mot de passe qui répond à la complexité du mot de passe .
  4. Nettoyer régulièrement les utilisateurs indésirables ,Recycler les permissions ou supprimer les utilisateurs.

2.3. Autorisation accordée

Les utilisateurs sont autorisés de la manière suivante: 2 Espèce,En mettant Le rôle donne l'autorisation à l'utilisateur Et Autoriser directement l'utilisateur .L'utilisateur est l'utilisateur de la base de données,Nous pouvons accéder aux ressources de la base de données en donnant aux utilisateurs l'accès,Pour contrôler l'accès des utilisateurs à la base de données,Éliminer les risques pour la sécurité.
Ordre d'autorisation:

GRANT Autorité1,Autorité2,...Autoritén ON Nom de la base de données.Nom du tableau TO Nom d'[email protected] de l'utilisateur [IDENTIFIED BY ‘Mot de passe’];

Cette permission Si l'utilisateur n'est pas trouvé,Un nouvel utilisateur est créé directement.
Par exemple,:
Voilà.zhang3L'utilisateur utilise la ligne de commande locale,OctroiMYSQLTESTPermissions d'insertion, de suppression et de recherche pour toutes les tables sous cette bibliothèque.

GRANT SELECT,INSERT,DELETE,UPDATE ON MYSQLTEST.* TO zhang3;

Accordé pour se connecter via le réseaujoeUtilisateurs ,Toutes les permissions pour toutes les tables de toutes les bibliothèques,Le mot de passe est défini à123.Notez qu'il n'y a qu'une seule exception.grantPermission de

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY '123456';
Quand nous développons des applications,Il y a souvent un besoin,C'est que selon l'utilisateur,Regroupement horizontal et vertical des données.
- Groupes dits horizontaux,Est l'étendue des données auxquelles l'utilisateur peut accéder,Par exemple, quelles tables voyez - vous?;
- Groupes dits verticaux,Est la mesure dans laquelle l'utilisateur a accès aux données,Comme regarder、- Oui.,Même Supprimer.

2.4. Voir les permissions

  1. Afficher les permissions actuelles de l'utilisateur
SHOW GRANTS;
# Ou
SHOW GRANTS FOR CURRENT_USER;
# Ou
SHOW GRANTS FOR CURRENT_USER();
  1. Voir les permissions globales d'un utilisateur
SHOW GRANTS FOR 'user'@'Adresse de l'hôte' ;

2.5. Autorisation de retrait

Le retrait d'une autorisation est l'annulation de certaines autorisations déjà accordées à l'utilisateur.La sécurité du système peut être assurée dans une certaine mesure en retirant les permissions inutiles des utilisateurs..MySQLUtilisé dans REVOKEDéclarations Annuler certaines permissions de l'utilisateur.UtiliserREVOKEAprès avoir retiré l'autorisation,L'enregistrement du compte utilisateur sera effectué à partir dedb、host、tables_privEtcolumns_privSupprimer du tableau,Mais l'enregistrement du compte utilisateur est toujoursuserEnregistrer dans le tableau(SupprimeruserUtilisation des enregistrements de compte dans le tableauDROP USERDéclarations).
Attention!:Le compte utilisateur est transféré deuserTableau avant suppression,Toutes les permissions de l'utilisateur correspondant doivent être retirées.

  • Ordre de retrait des droits:
REVOKE Autorité1,Autorité2,...Autoritén ON Nom de la base de données.Nom du tableau FROM Nom d'[email protected] de l'utilisateur;
  • Exemples
#Récupérer toutes les permissions pour la table complète de la Bibliothèque
REVOKE ALL PRIVILEGES ON *.* FROM [email protected]'%';
#RetraitmysqlPermissions d'insertion, de suppression et de recherche pour toutes les tables sous la Bibliothèque
REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM [email protected];

Attention!: L'utilisateur doit se reconnecter pour prendre effet

Trois. Tableau des autorisations

3.1. userTableau

userLe tableau estMySQLLa liste des permissions la plus importante, Enregistrer le compte utilisateur et les informations d'autorisation ,Oui.49Champs.Comme le montre la figure ci - dessous::
Insérer la description de l'image iciCes champs peuvent être divisés en4Catégorie,Colonnes de plage, respectivement(Ou colonne utilisateur)、Colonnes de permission、Colonnes de sécurité et de contrôle des ressources.

3.1. 1. Colonne de plage(Ou colonne utilisateur)

  1. host : Indique le type de connexion
  • % Représente tous les passages à distance TCPMode de connexion.
  • IP Adresse Par exemple: (192.168.1.2、127.0.0.1) Par le développementipAdresseTCPMode de connexion.
  • Nom de la machine En créant un nom de machine dans le réseauTCPMode de connexion.
  • ::1 IPv6LocalipAdresse,équivalent àIPv4De 127.0.0.1
  • localhost Connexion locale en ligne de commande ,Par exemple,mysql -u xxx -p xxx Mode de connexion.
  1. user : Représente le nom d'utilisateur,Les permissions d'un même utilisateur liées de différentes façons sont différentes.
  2. password : Mot de passe
  • Toutes les chaînes de mot de passe passent password(Chaîne de texte simple) Chaîne de texte générée.MySQL 8.0 Ajout de la gestion des rôles dans la gestion des utilisateurs,Le chiffrement par défaut du mot de passe a également été ajusté,Par SHA1 A la place SHA2 ,Irréversible .En même temps MySQL 5.7 Désactiver l'utilisateur et la fonction d'expiration de l'utilisateur pour,MySQL La fonctionnalité et la sécurité de la gestion des utilisateurs sont considérablement améliorées par rapport aux versions précédentes.
  • mysql 5.7 Et les versions ultérieures du mot de passe sont sauvegardées dans authentication_string N'est plus utilisé dans les champspassword Champ.

3.1.2. Colonnes de permission

  1. Grant_privChamp:Indique s'il possèdeGRANTAutorité.
  2. Shutdown_privChamp:Indique s'il y a un arrêtMySQLPermissions pour le Service.
  3. Super_privChamp:Indique si vous avez des super permissions.
  4. Execute_privChamp:Indique s'il possèdeEXECUTEAutorité.PropriétéEXECUTEAutorité,Peut exécuter des procédures et des fonctions stockées.
  5. Select_priv , Insert_privAttendez.:Permissions pour cet utilisateur.

3.1.3. Colonne de sécurité

La colonne de sécurité n'a que6Champs,Deux d'entre eux sontsslQuestions connexes(ssl_type、ssl_cipher),Pour Cryptage ;Deux.x509Questions connexes(x509_issuer、x509_subject),Pour Identifier les utilisateurs ;Les deux autres.PluginChamps pour Authentification de l'utilisateur Plug - in pour,Ce champ ne peut pas être vide.Si le champ est vide,Le serveur utilise le mécanisme d'authentification d'autorisation intégré pour authentifier l'utilisateur.

3.1.4. Colonne de contrôle des ressources

Les champs de la colonne de contrôle des ressources sont utilisés pour Limiter les ressources utilisées par les utilisateurs ,Contient4Champs,Respectivement::
①max_questions,Nombre d'opérations de requête autorisées par l'utilisateur par heure;
②max_updates,Nombre d'opérations de mise à jour autorisées par l'utilisateur par heure;
③max_connections,Nombre d'opérations de connexion autorisées par l'utilisateur par heure;
④max_user_connections,Nombre de connexions simultanées autorisées par l'utilisateur.
Voir les champs:

DESC mysql.user;

Voir les utilisateurs, Afficher les données en colonnes:

SELECT * FROM mysql.user \G;

Rechercher des champs spécifiques:

SELECT host,user,authentication_string,select_priv,insert_priv,drop_priv
FROM mysql.user;

Insérer la description de l'image ici

3.2. dbTableau

UtiliserDESCRIBEVoirdbStructure de base du tableau:

DESCRIBE mysql.db;

Insérer la description de l'image ici

  1. Colonne utilisateur dbListe des utilisateurs du tableau3Champs,Respectivement.Host、User、Db.Voilà.3Les champs représentent respectivement le nom d'hôte、Nom d'utilisateur et nom de base de données.Représente les permissions d'exploitation d'un utilisateur connecté à une base de données à partir d'un hôte,Voilà.3La combinaison des champs constituedbClé primaire du tableau.
  2. Colonnes de permission Create_routine_privEtAlter_routine_privCes deux champs déterminent si l'utilisateur a la permission de créer et de modifier des procédures stockées.

3.3. tables_privTable etcolumns_privTableau

tables_privTable for Définir les permissions d'action sur la table ,columns_privLa table est utilisée pour faire correspondre Définir les permissions pour une colonne .tables_privTable etcolumns_privLa structure du tableau est la suivante::

desc mysql.tables_priv;

Insérer la description de l'image ici
tables_privOui.8Champs,Respectivement.Host、Db、User、Table_name、Grantor、Timestamp、Table_privEtColumn_priv,Chaque champ est décrit comme suit::

  • Host 、 Db 、 User Et Table_name Quatre champs pour le nom d'hôte、Nom de la base de données、Nom d'utilisateur et nom de table.
  • GrantorIndique l'utilisateur qui a modifié l'enregistrement.
  • TimestampIndique quand l'enregistrement a été modifié.
  • Table_priv Représente les permissions d'action de l'objet.Y compris:Select、Insert、Update、Delete、Create、Drop、Grant、References、IndexEtAlter.
  • Column_privLes champs représentent les permissions d'action sur les colonnes du tableau,Y compris:Select、Insert、UpdateEtReferences.
desc mysql.columns_priv;

3.4. procs_privTableau

procs_privLe tableau est correct. Procédures stockées et fonctions stockées définir les permissions d'opération ,La structure du tableau est illustrée à la figure ci - dessous.:

desc mysql.procs_priv;

Insérer la description de l'image ici

Quatre. Contrôle d'accès(Compris.)

4.1. Phase de vérification de la connexion

Lorsque l'utilisateur tente de se connecterMySQLQuand le serveur,Le serveur détermine si la connexion est acceptée ou refusée en fonction de l'identité de l'utilisateur et si l'utilisateur peut fournir l'authentification par mot de passe correcte.C'est - à - dire que l'utilisateur client fournira le nom d'utilisateur dans la demande de connexion、Adresse de l'hôte、Mot de passe de l'utilisateur,MySQLUne fois que le serveur a reçu la demande de l'utilisateur,Sera utiliséuserDans le tableauhost、userEtauthentication_stringVoilà.3Les champs correspondent aux informations fournies par le client.
Le serveur n'est disponible que siuserEnregistré dans le tableauHostEtUserLes champs correspondent au nom d'hôte du client et au nom d'utilisateur,La connexion n'est acceptée que si le mot de passe correct est fourni.Si la vérification de connexion échoue,Le serveur refuse complètement l'accès;Sinon,Le serveur accepte les connexions,Et passer à l'étape2Attendre la demande de l'utilisateur.

4.2. Phase de vérification de la demande

Une fois la connexion établie,Le serveur entre dans la phase de contrôle d'accès2,C'est - à - dire la phase de vérification de la demande.Chaque demande entrant sur cette Connexion,Le serveur vérifie ce que la requête doit faire、Y a - t - il suffisamment de permissions pour l'exécuter?,C'est là que les colonnes de permission du tableau d'autorisation doivent fonctionner..Ces permissions peuvent provenir deuser、db、table_privEtcolumn_privTableau.
Lors de la confirmation des permissions,MySQLTout d'abord, VérifiezuserTableau ,Si la permission spécifiée n'est pas dansuserTableau des subventions accordées,AlorsMySQLÇa va continuer. VérifiezdbTableau ,dbLe tableau est le niveau de sécurité suivant,Où les permissions sont limitées au niveau de la base de données,À ce niveauSELECTLes permissions permettent à l'utilisateur de visualiser les données dans toutes les tables de la base de données spécifiée;Si aucune permission qualifiée n'est trouvée à ce niveau,EtMySQLContinue. Vérifieztables_privTableau Et columns_privTableau ,Si toutes les listes de permission sont vérifiées,Mais l'opération permissive n'a toujours pas été trouvée,MySQLOui. Renvoie un message d'erreur ,L'action demandée par l'utilisateur ne peut pas être exécutée,L'opération a échoué.

Conseils: MySQLPar ordre décroissant(DeuserTableaucolumns_privTableau)Vérifier la liste des permissions,
Mais toutes les permissions n'exécutent pas le processus.Par exemple,Un utilisateur se connecte àMySQLServeur
 Après cela, seule la paire est exécutée MySQLOpérations de gestion pour,Seules les permissions administratives sont concernées à ce stade,Donc,MySQLVérifier seulementuserTableau.
En plus,Si l'opération de permission demandée n'est pas autorisée,MySQLEt ne va pas continuer à vérifier les tableaux au niveau suivant.

Cinq. Gestion des rôles

5.1. Compréhension des rôles

Le but de l'introduction des rôles est Faciliter la gestion des utilisateurs ayant les mêmes droits .Paramètres de permission appropriés,Assure la sécurité des données,C'est crucial.
Insérer la description de l'image ici

5.2. Créer un rôle

Créer un rôle à utiliser CREATE ROLE Déclarations,La syntaxe est la suivante::

CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...

Les règles de nommage pour les noms de rôles sont similaires aux noms d'utilisateurs.Si host_nameOmis,Par défaut% , role_nameNe pas omettre ,Ne peut pas être vide.
Exercice:Nous devons maintenant créer un rôle de gestionnaire,Vous pouvez utiliser le code suivant:

 create role 'manager'@'localhost';

5.3. Accorder des permissions aux rôles

Après avoir créé le rôle,Par défaut, ce rôle n'a aucune permission,Nous devons déléguer les rôles.La syntaxe d'autorisation des rôles est:

GRANT privileges ON table_name TO 'role_name'[@'host_nam

Dans l'énoncé ci - dessusprivilegesNom de l'autorisation du Représentant,Les permissions multiples sont séparées par des virgules.Disponible enSHOWInstruction Query permission name,Fig.11-43 Liste partielle des permissions .

SHOW PRIVILEGES\G;

Insérer la description de l'image ici

5.4. Voir les permissions pour le rôle

Après avoir accordé les permissions de rôle,On peut passer par SHOW GRANTS Déclarations,Pour voir si les permissions ont été créées avec succès:
Insérer la description de l'image ici
Tant que vous créez un personnage,Le système vous donnera automatiquement“ USAGE ”Autorité,Ça veut dire... Permission de se connecter à la base de données de connexion .

GRANT all PRIVILEGES ON *.* TO 'manager'@'localhost';

Insérer la description de l'image ici

5.5. Récupérer les permissions pour le rôle

Après autorisation de rôle,Les permissions pour les rôles peuvent être maintenues,Ajouter ou révoquer des permissions.Ajouter des permissions pour utiliserGRANTDéclarations,Identique à l'autorisation de rôle.Annuler l'utilisation du rôle ou des permissions de rôleREVOKEDéclarations.
Permissions modifiées pour le rôle,Les permissions qui affectent les comptes qui ont ce rôle.
Révoquer les permissions de rôleSQLLa syntaxe est la suivante::

REVOKE privileges ON tablename FROM 'rolename';

5.6. Supprimer le rôle

Quand on a besoin de se regrouper ,Vous devrez peut - être nettoyer les rôles que vous avez créés plus tôt,Supprimer certains rôles qui ne seront plus utilisés.La suppression d'un rôle est simple, Il suffit de maîtriser la structure grammaticale .

DROP ROLE role [,role2]...

Attention!, Si vous supprimez un rôle,L'utilisateur perd alors toutes les permissions qu'il a acquises dans ce rôle. .

5.7. Assigner des rôles aux utilisateurs

Après la création et l'autorisation des rôles,Pour assigner à l'utilisateur et État d'activation Pour que ça marche..Ajouter un rôle à l'utilisateur à utiliserGRANTDéclarations,La syntaxe est la suivante:

GRANT role [,role2,...] TO user [,user2,...];

Dans l'énoncé ci - dessus,roleRôle du Représentant,userAu nom de l'utilisateur.Vous pouvez assigner plusieurs rôles à plusieurs utilisateurs en même temps,Séparer par des virgules.
Exercice:Voilà.kangshifuUtilisateur ajouter un rôleschool_readAutorité.
(1)UtiliserGRANTLa déclaration est la suivante:kangshifuAjouterschool_readAutorité,SQLL'énoncé est le suivant.

GRANT 'school_read' TO 'kangshifu'@'localhost';

(2)Utiliser une fois l'ajout terminéSHOWDéclaration pour voir si elle a été ajoutée avec succès,SQLL'énoncé est le suivant.

SHOW GRANTS FOR 'kangshifu'@'localhost';

(3)UtiliserkangshifuConnexion utilisateur,Puis Interrogez le rôle actuel,Si le rôle n'est pas actif,Les résultats seront affichésNONE.SQLL'énoncé est le suivant.

SELECT CURRENT_ROLE();

5.8. Activer le rôle

Comment1:Utiliserset default role Commande activer le rôle
Exemples:

SET DEFAULT ROLE ALL TO 'kangshifu'@'localhost';

Exemples:Utiliser SET DEFAULT ROLE En bas.4Les utilisateurs activent par défaut tous les rôles existants comme suit:

SET DEFAULT ROLE ALL TO
'dev1'@'localhost',
'read_user1'@'localhost',
'read_user2'@'localhost',
'rw_user1'@'localhost';

Comment2:Oui.activate_all_roles_on_loginSet toON

  • Par défaut:
    Insérer la description de l'image ici
    Paramètres:
SET GLOBAL activate_all_roles_on_login=ON;

Celui - là. SQL L'énoncé signifie:,C'est exact. Tous les rôles sont activés en permanence .Après avoir exécuté cette instruction,C'est l'utilisateur qui a vraiment toutes les permissions accordées au rôle.

5.9. Annuler le rôle de l'utilisateur

Annuler le rôle de l'utilisateurSQLLa syntaxe est la suivante::

REVOKE role FROM user;

5.10. Définir les rôles obligatoires(mandatory role)

Comment1:Paramètres avant le démarrage du Service

[mysqld]
mandatory_roles='role1,[email protected],[email protected]%.zyy.com'

Comment2:Paramètres d'exécution

SET PERSIST mandatory_roles = 'role1,[email protected],[email protected]%.example.com'; # Toujours après le redémarrage du système 
Ça marche.
SET GLOBAL mandatory_roles = 'role1,[email protected],[email protected]%.example.com'; #Défaillance après redémarrage du système
原网站

版权声明
本文为[Protégez - nous, Yao.]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060911326205.html