web-dev-qa-db-fra.com

Créez un utilisateur avec des privilèges pour créer des utilisateurs

Pour notre logiciel, nous avons besoin d'un utilisateur MySQL capable de créer d'autres utilisateurs MySQL. Ceci est possible avec l'utilisateur racine MySQL, mais nous ne voulons pas utiliser l'utilisateur root dans notre application logicielle. Existe-t-il un moyen de créer un utilisateur MySQL qui peut créer d'autres utilisateurs?

J'ai lu plusieurs sujets et pages sur Internet qui disent que cela est possible avec l'option de subvention. Mais lorsque je vérifie la description de la permission MySQL, cette autorisation est "Le privilège d'option de subvention vous permet de donner à d'autres utilisateurs ou de supprimer des autres utilisateurs que vous possédez vous-même vous-même." Donc, ne fournit pas la possibilité de créer des utilisateurs, ne leur donnez que des autorisations que vous avez.

Peut-être que je comprends quelque chose de mal mais j'ai peur de faire quelque chose de mal sur notre serveur. C'est aussi la raison de ma question.

J'espère que quelqu'un peut m'expliquer si c'est possible et comment créer un utilisateur avec les privilèges dont nous avons besoin.

3
RoDo

Pour pouvoir créer des utilisateurs MySQL, vous devez être capable d'insérer dans la table des utilisateurs de la base de données MySQL. Donc, créez votre utilisateur maître et donnez-lui un accès en écriture à la base de données MySQL.

La documentation indique ( http://dev.mysql.com/doc/refman/5.7/fr/create-user.html )

Pour utiliser Créer un utilisateur, vous devez disposer du privilège Global Create Create ou le privilège Insert pour la base de données MySQL. Lorsque la variable de système READ_ONLY est activée, Créer un utilisateur nécessite également le super privilège.

Donc, le processus serait quelque chose comme ceci:

(root)> create user masteruser ...
(root)> grant CREATE_USER to masteruser ...
(masteruser)> create user foo1 ...
(masteruser)> create user foo2 ...

En outre, il est considéré comme une bonne pratique d'utiliser un système de test pour tester un tel comportement; Donc, lorsque vous vous gâchez, il n'y a pas de mal à une bonne base de données réelle.

5
til_b

Le privilège que vous recherchez est Créer l'utilisateur Privilège.

GRANT CREATE_USER on [db].[table] to <user_who_will_have_that_privilege>@<Host>

Exemple:

GRANT SELECT, CREATE USER on *.* to 'test'@'localhost';

MySQL Documentation sur ce privilège:

Le privilège de la création de l'utilisateur permet d'utiliser Alter utilisateur, Créer l'utilisateur, Drop User, Renommer l'utilisateur , et révoquer tous les privilèges.

EDİT: Répecte de réponse à @ til_b Réponse de 12 minutes en retard

4
bkaratatar