Ответ 1
Попробуйте выполнить запрос после предоставления:
FLUSH PRIVILEGES;
У меня есть база данных, где я бы хотел, чтобы пользователи могли создавать новых пользователей. Это достигается через GRANT CREATE USER следующим образом:
grant create user on *.* to foo;
Это отлично работает, и foo может создавать пользователей. Моя проблема заключается в том, что строка выше работает, если она запускается от имени пользователя root, но не работает, если выполняется как обычный пользователь, даже если у такого пользователя уже есть привилегия CREATE USER.
Короче говоря, обычные пользователи не могут делегировать возможность создавать пользователей. Я искал все возможности для каких-либо конкретных привилегий, которые вам нужно для этого, и я начинаю думать, что это может сделать только корень, хотя я не нашел никаких доказательств этого в документации MySQL.
Вопрос: как я могу позволить нормальному пользователю разрешить пользователям создавать пользователей?
Попробуйте выполнить запрос после предоставления:
FLUSH PRIVILEGES;
Оба ответа были полезны - я использовал комбинацию обоих и, похоже, сработал.
Как 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)
Большое вам спасибо.
Чтобы иметь возможность GRANT
предоставлять привилегии другим пользователям, пользователь MySQL должен был быть создан WITH GRANT OPTION
.
http://dev.mysql.com/doc/refman/5.1/en/grant.html#grant-other-characteristics
-- Create username user
GRANT ALL PRIVILEGES ON `tshirtshop`.*
TO 'username'@'localhost' IDENTIFIED BY 'password'
WITH GRANT OPTION;