Как я могу предоставить пользователю создать пользователя в качестве пользователя без полномочий root?

У меня есть база данных, где я бы хотел, чтобы пользователи могли создавать новых пользователей. Это достигается через GRANT CREATE USER следующим образом:

grant create user on *.* to foo;

Это отлично работает, и foo может создавать пользователей. Моя проблема заключается в том, что строка выше работает, если она запускается от имени пользователя root, но не работает, если выполняется как обычный пользователь, даже если у такого пользователя уже есть привилегия CREATE USER.

Короче говоря, обычные пользователи не могут делегировать возможность создавать пользователей. Я искал все возможности для каких-либо конкретных привилегий, которые вам нужно для этого, и я начинаю думать, что это может сделать только корень, хотя я не нашел никаких доказательств этого в документации MySQL.

Вопрос: как я могу позволить нормальному пользователю разрешить пользователям создавать пользователей?

Ответ 1

Попробуйте выполнить запрос после предоставления:

FLUSH PRIVILEGES;

Ответ 2

Оба ответа были полезны - я использовал комбинацию обоих и, похоже, сработал.

Как root (admin - обычный пользователь):

mysql> grant create user on *.* to admin with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Как администратор (помните, что он обычный пользователь):

mysql> grant create user on *.* to foo with grant option;
Query OK, 0 rows affected (0.00 sec)

Большое вам спасибо.

Ответ 4

-- Create username user

GRANT ALL PRIVILEGES ON `tshirtshop`.*
      TO 'username'@'localhost' IDENTIFIED BY 'password'
      WITH GRANT OPTION;