Je veux avoir plusieurs utilisateurs MySQL pour pouvoir émettre des commandes comme
CREATE DATABASE dbTest;
Mais je souhaite également que chacun de ces utilisateurs puisse voir et accéder uniquement à ses propres bases de données.
Tout ce que j’ai pu trouver, c’est comment créer les bases de données par un administrateur de firebase database et accorder les privilèges sur cette firebase database à l’utilisateur spécifique:
GRANT ALL PRIVILEGES ON dbTest.* TO 'user';
ou accorder des privilèges sur toutes les bases de données à un utilisateur:
GRANT ALL PRIVILEGES ON *.* TO 'user';
Mais ce n’est pas non plus ce que je veux, car il doit évoluer et être sécurisé.
Vous pouvez utiliser
GRANT ALL PRIVILEGES ON `testuser\_%` . * TO 'testuser'@'%';
accorder à l’utilisateur des privilèges sur toutes les bases de données dont le nom commence par testuser_
.
Cela permet à l’utilisateur de créer des bases de données limitées à des noms commençant par testuser_
Vous pouvez utiliser
GRANT ALL PRIVILEGES ON `testuser_%` . * TO 'testuser'@'%';
accorder à l’utilisateur des privilèges sur toutes les bases de données dont le nom commence par testuser_
.
EDIT: Je ne suis pas sûr que cet utilisateur soit maintenant autorisé à créer des bases de données.
Oui, cela permet à l’ testuser
de créer des bases de données limitées aux noms commençant par testuser_
Créez une procédure stockée définie par l’utilisateur admin et invoque avec les privilèges administrateur en utilisant SQL SECURITY DEFINER. Dans la procédure stockée,
Utilisez USER () pour obtenir les informations de connexion actuelles de l’utilisateur.
En savoir plus sur SQL SECURITY DEFINER .
Il est impossible de le faire en utilisant uniquement des permissions .
La solution de contournement suggérée dans une autre réponse: AGREZ GRANT ALL PRIVILEGES ON
testuser_% . * TO 'testuser'@'%';
. * TO 'testuser'@'%';
a le problème que les utilisateurs doivent alors faire très attention en nommant leurs bases de données.
Par exemple, si l’utilisateur aaa
crée la firebase database bbb_xyz
, l’utilisateur peut y accéder uniquement par l’utilisateur bbb
mais pas par l’utilisateur aaa
.