web-dev-qa-db-ja.com

ユーザーを作成する権限を持つユーザーを作成します

私たちのソフトウェアには、他のMySQLユーザーを作成できるMySQLユーザーが必要です。これはMySQLのrootユーザーで可能ですが、ソフトウェアアプリケーションでrootユーザーを使用したくありません。他のユーザーを作成できるMySQLユーザーを作成する方法はありますか?

GRANT OPTIONでそれが可能であると言うインターネット上の複数のトピックとページを読みました。しかし、MySQLの権限の説明を確認すると、この権限は「GRANT OPTION権限により、自分が所有している権限を他のユーザーに付与したり、他のユーザーから削除したりできます。」したがって、ユーザーを作成するオプションは提供されず、ユーザーに自分が持っている権限のみを付与します。

多分私は何か間違ったことを理解していますが、私たちのサーバーで何か間違ったことをするのを恐れています。それも私の質問の理由です。

必要な特権を持つユーザーを作成することが可能かどうか、またどのように作成するかを誰かに説明していただければ幸いです。

3
RoDo

Mysqlユーザーを作成できるようにするには、mysqlデータベースのユーザーテーブルに挿入できる必要があります。マスターユーザーを作成し、mysqlデータベースへの書き込みアクセス権を付与します。

ドキュメントには( http://dev.mysql.com/doc/refman/5.7/en/create-user.html )と記載されています

CREATE USERを使用するには、mysqlデータベースに対するグローバルのCREATE USER権限またはINSERT権限が必要です。 read_onlyシステム変数が有効になっている場合、CREATE USERにはSUPER権限がさらに必要です。

したがって、プロセスは次のようになります。

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

また、そのような動作をテストするためにテストシステムを使用することは良い習慣と見なされます。混乱した場合でも、実際の実際のデータベースに害が及ぶことはありません。

5
til_b

あなたが探している特権は CREATE USER 特権です。

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

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

この権限に関するMySQLドキュメント:

CREATE USER特権は、ALTER USERCREATE USERの使用を有効にしますDROP USERRENAME USERおよびREVOKE ALL PRIVILEGES

EDİT:回答を複製 @ til_b の回答、12分遅れ

4
bkaratatar