Gestion des utilisateurs, des rôles et des privilèges
MySQL utilise un système de rôles pour gérer les autorisations d'accès à la base de données. Créez des utilisateurs à partir de l'interface utilisateur et du shell d' MySQL. Les utilisateurs créés à partir de l'interface utilisateur disposent de privilèges presque identiques à ceux de admin, mais ne peuvent pas créer d'autres utilisateurs. Comme admin dispose à la fois des GRANT options CREATE USER et, il peut créer un utilisateur et lui attribuer tous les privilèges dont il dispose, y compris celui de créer de nouveaux utilisateurs.
mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;
+-----------------------------+
| GRANTEE |
+-----------------------------+
| 'ibm'@'localhost' |
| 'mysql.session'@'localhost' |
| 'mysql.sys'@'localhost' |
| 'ibm-backup'@'localhost' |
| 'admin'@'%' |
| 'ibm-replication'@'%' |
| 'ibm-monitor'@'%' |
+-----------------------------+
+-----------------+
| user |
+-----------------+
| admin |
| ibm-monitor |
| ibm-replication |
| ibm |
| ibm-backup |
| mysql.session |
| mysql.sys |
+-----------------+
Les utilisateurs ci-dessous sont gérés par IBM Cloud et ne doivent pas être modifiés ou supprimés par vous :
| ibm-monitor |
| ibm-replication |
| ibm |
| ibm-backup |
Lorsque vous provisionnez un nouveau déploiement dans IBM Cloud, vous recevez automatiquement un admin utilisateur pour accéder à MySQL et le gérer.
Ajoutez des utilisateurs dans l'interface utilisateur dans les informations d'identification du service, avec le plug-in CLI Cloud Databases ou l'API Cloud Databases.
Commandes de gestion des utilisateurs
Pour des raisons de sécurité, nous vous recommandons de ne pas exécuter des requêtes liées au langage de manipulation de données (DML) sur la table mysql.user. Pour vous protéger contre la modification de la table mysql.user,
vous devez utiliser des requêtes DML pour gérer les utilisateurs.
Gérez les utilisateurs à l'aide de commandes telles que CREATE USER, ALTER USER, RENAME USER et DROP USER.
Une liste d'utilisateurs contenant des informations sur leurs hôtes, mais sans informations d'authentification et de mot de passe, peut être extraite en exécutant la commande suivante :
mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;
Administrateur (admin)
Lorsque vous mettez à disposition un nouveau déploiement dans IBM Cloud, vous recevez automatiquement un nom d'administrateur pour consulter et gérer MySQL. Une fois que vous avez défini le mot de passe de l'administrateur, utilisez-le pour vous connecter à votre déploiement.
Lorsqu'un admin utilisateur crée une ressource dans une base de données, telle qu'une table, admin il devient propriétaire de cet objet. Les utilisateurs créés à partir de l'interface utilisateur disposent des autorisations
nécessaires *.*, ce qui signifie que tout nouvel utilisateur créé peut automatiquement consulter n'importe quelle base de données. Utilisez MySQL sh ou modifiez les autorisations d'un utilisateur créé par l'interface utilisateur
pour restreindre l'accès. Pour limiter les droits d'accès, supprimez les privilèges globaux, s'ils sont activés, et accordez des privilèges à une base de données ou à un ensemble de bases de données auquel un utilisateur donné est censé avoir
accès.
Définissez le mot de passe de l'administrateur avant de l'utiliser pour la connexion.
Définition du mot de passe administrateur dans l'interface utilisateur
Définissez votre mot de passe administrateur via l'interface utilisateur en sélectionnant votre instance dans la liste des ressources du tableau de bord IBM Cloud. Sélectionnez ensuite Paramètres. Ensuite, sélectionnez Modifier le mot de passe de l'administrateur de la base de données.
Définition du mot de passe administrateur dans le CLI
Utilisez la commande cdb user-password à partir du plug-in IBM Cloud de l'interface de ligne de commande Cloud Databases pour définir le mot de passe de l'administrateur.
Par exemple, pour définir le mot de passe administrateur d'un déploiement nommé example-deployment, utilisez la commande suivante :
ibmcloud cdb user-password example-deployment admin <newpassword>
Définition du mot de passe administrateur dans l'API
Le point de terminaison de base affiché dans la section Détails du déploiement du panneau Aperçu de votre service fournit l' URL aire de base pour accéder à ce déploiement via l'API. Utilisez-le avec le noeud final Définir le mot de passe de l'utilisateur spécifié pour définir le mot de passe de l'administrateur.
curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \
Autres utilisateurs ibm
Les comptes ibm et ibm-replication sont les seuls superutilisateurs sur votre déploiement. Vous ne pouvez pas utiliser un compte superutilisateur. Ces utilisateurs sont des comptes d'administration internes qui gèrent
la réplication, les métriques et d'autres fonctions assurant la stabilité de votre déploiement.
Utilisateurs créés avec mysql
Vous pouvez ignorer entièrement la création d'utilisateurs via IBM Cloud et créer des utilisateurs directement dans MySQL avec mysql. Cela vous permet d'utiliser le rôle et la gestion des utilisateursnatif
de MySQL. Les utilisateurs/rôles créés dans mysql doivent avoir tous leurs privilèges définis manuellement, ainsi que les privilèges sur les objets qu'ils créent.
Les utilisateurs créés directement dans MySQL n'apparaissent pas dans Données d'identification, mais vous pouvez les ajouter si vous le choisissez.
Notez que ces utilisateurs ne sont pas intégrés aux contrôles IAM, même s'ils sont ajoutés à Données d'identification.
Accès utilisateur aux tables
Bien que vous ne puissiez pas supprimer mysql database, les utilisateurs peuvent supprimer des tables, y compris la table mysql.users qui contient des utilisateurs internes. Les clients ne doivent pas supprimer de table
appartenant à mysql database car cette action peut entraîner une formation interrompue, qui ne peut être résolue qu'avec une reprise PITR (Point-in-time recovery).
IBM Cloud n'émet pas d'alerte en cas de rupture de formation due à la suppression d'une table système par un client.
Autres utilisateurs et chaînes de connexion
L'accès à votre déploiement Databases for MySQL n'est pas limité à l'administrateur. Vous pouvez créer des utilisateurs à l'aide du panneau Données d'identification , de l'interface de ligne de commande IBM ou de l'API IBM Cloud Databases.
Tous les utilisateurs de votre déploiement peuvent utiliser les chaînes de connexion, y compris celles pour des noeuds finaux publics ou privés.
Lorsque vous créez un utilisateur, il reçoit certains rôles et privilèges de base de données. Ces privilèges incluent la possibilité de se connecter, de créer des bases de données et de créer d'autres utilisateurs. Pour plus d'informations, voir la page Gestion des utilisateurs, rôles et privilège.
Création d'utilisateurs dans Données d'identification
- Accédez au tableau de bord de votre service.
- Cliquez sur Données d'identification pour ouvrir le panneau Données d'identification.
- Cliquez sur Nouvelles données d'identification.
- Choisissez un nom descriptif pour vos nouvelles données d'identification.
- (Facultatif) Indiquez si les nouvelles données d'identification doivent utiliser un noeud final public ou privé. Utilisez
{ "service-endpoints": "public" }/{ "service-endpoints": "private" }dans la zone Ajouter des paramètres de configuration en ligne pour générer des chaînes de connexion à l'aide du noeud final indiqué. L'utilisation du noeud final n'est pas imposée. Elle permet juste de contrôler les noms d'hôte mentionnés dans les chaînes de connexion. Les noeuds finaux publics sont générés par défaut. - Cliquez sur Ajouter pour fournir les nouvelles données d'identification. Un nom d'utilisateur, un mot de passe et un utilisateur de base de données associé dans la base de données MySQL sont générés automatiquement.
Les nouvelles données d'identification apparaissent dans la table et les chaînes de connexion sont disponibles au format JSON dans une zone de type Cliquer pour copier sous Afficher les données d'identification.
Création d'utilisateurs à partir de la ligne de commande
Si vous gérez votre service via l'interface de ligne de commande IBM Cloud et le plug-in Cloud Databases, vous pouvez créer un nouvel utilisateur à l'aide de la commande cdb user-create.
Par exemple, pour créer un nouvel utilisateur pour un exemple de déploiement nommé "example-deployment", utilisez la commande suivante :
ibmcloud cdb user-create example-deployment <newusername> <newpassword>
Une fois la tâche terminée, vous pouvez extraire les chaînes de connexion du nouvel utilisateur à l'aide de la commande ibmcloud cdb deployment-connections.
Création d'utilisateurs à partir de l'API
Le Noeud final de base qui s'affiche sur le panneau Aperçu Détails du déploiement de votre service fournit l'URL de base permettant d'accéder à ce déploiement via l'API. Pour créer et gérer des utilisateurs, utilisez
l'URL de base avec le noeud final /users.
curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'
Une fois la tâche terminée, vous pouvez extraire les chaînes de connexion du nouvel utilisateur à partir du noeud final /users/{userid}/connections.
Ajout d'utilisateurs à Données d'identification de service
La création d'un nouvel utilisateur à partir de l'interface de ligne de commande ne remplit pas automatiquement les chaînes de connexion de cet utilisateur dans Données d'identification. Si vous souhaitez les y ajouter, vous pouvez créer de nouvelles données d'identification avec les informations utilisateur existantes.
Entrez le nom d'utilisateur et le mot de passe dans la zone JSON Ajouter des paramètres de configuration en ligne ou indiquez un fichier dans lequel les informations JSON sont stockées. Par exemple, le fait de placer {"existing_credentials":{"username":"Robert","password":"supersecure"}} dans la zone génère Données d'identification avec le nom d'utilisateur "Robert" et le mot de passe "supersecure" rempli dans les chaînes de connexion.
Lorsque des données d'identification sont générées à partir d'un utilisateur existant, celui-ci n'est pas vérifié ni créé.