Задавайте вопросы, мы ответим
Вы не зашли.
Уважаемые, может кто в курсе что не так.. Не могу привязать пользователя к базе, чё уже тока не пробовал
Пишу: GRANT ALL ON `users`.`qq` TO 'qq' IDENTIFIED BY '11'
Получаю: #1410 - You are not allowed to create a user with GRANT
Делаю рутом: grant grant option on *.* to 'имя_юзера'
Лезу в таблицу прав, в столбце Grant_priv стоит Y.
А проблема остаётся.. Баг ли? Сервер 5.0.45, подскажите плз, мож что-то не так делаю.
ЗІ Юзер qq изначально отсутствует.
Неактивен
Правильно ли указан хост для юзера? Попробуйте SHOW GRANT под требуемым юзером посмотреть.
Неактивен
Хост вообще не указываю нигде... Я так понимаю, проблема ч том, что "create a user with GRANT" и "Юзер qq изначально отсутствует", ща проверю своё предположение
Неактивен
Вы, возможно, даете права юзеру qq@'%', а подключаетесь юзером qq@localhost
Неактивен
#1410 - You are not allowed to create a user with GRANT
SQL_MODE стоит в NO_AUTO_CREATE_USER, полагаю?
Неактивен
rgbeast написал:
Вы, возможно, даете права юзеру qq@'%', а подключаетесь юзером qq@localhost
Эммм... а разве localhost не входит в %? Я не указываю хост для юзера, значит берётся %, а с локального хоста эти права обычно доступны.
paulus написал:
SQL_MODE стоит в NO_AUTO_CREATE_USER, полагаю?
SQL_MODE пуст.
Результат SHOW GRANTS под юзером route, который должен создать юзера qq:
GRANT USAGE ON *.* TO 'route'@'%' IDENTIFIED BY PASSWORD '*E6CC90B878B948C35E92B003C792C46C58C4AF40' WITH GRANT OPTION
GRANT ALL PRIVILEGES ON `route`.* TO 'route'@'%'
GRANT ALL PRIVILEGES ON `users`.* TO 'route'@'%' WITH GRANT OPTION
Это в панике уже была куча прав добавлена.
Попытка создать юзера, ответ: #1227 - Access denied; you need the CREATE USER privilege for this operation
Пытаюсь добавить привелегию создания юзера: GRANT CREATE USER TO 'route'
Ответ: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USER TO 'route'', т.е. сервер такой привилегии вообще не знает :\
ЗЫ Поменял USAGE на ALL PRIVILEGES и проблема прав исчезла. Получается, проблема была в том, что запрос привелегий юзера qq выполнялся при использовании базы `route`, в которой небыло привелегии GRANT. Как-то не логично, ведь юзера qq я привязывал к базе `users`, в которой есть привелегия GRANT, по идее должно быть всё равно в какой базе выполняется запрос...
В таком случае меня только интересует пример запроса создания юзера, почему сервер не знает CREATE USER?
Неактивен
Знает, только Вы синтаксис соблюдайте полностью.
mysql> grant create user on *.* to username@hostname identified by 'password';
Query OK, 0 rows affected (0.00 sec)
Неактивен
Вот так вот, оказывается...
И опять же, "on *.*" привязывает привилегию к конкретной базе :\ Как-то не логично это придумали, имхо.
Неактивен
«Конкретная» база — это любая? А «не конкретная» — это какая тогда?
Неактивен
Не-не, я имею ввиду, что к примеру привилегия создания юзера разрешена в базе X, юзера нужно создать с доступом к базе X, а запрос выполняется в базе Y. Если в базе Y нет привилегии создания юзера, то мы не сможем его создать для базы X. Вот это для меня немного не логично По идее, сначала юзер создаётся "в корне", а уже потом получает доступ к базам. А тут получается, если запрос не из корня, то мол покажите права на создание не из корня, хотя право создания в корне имеется
ЗЫ А вообще, сабж решён - это главное))
Неактивен
Это не Oracle, пользователи тут глобальные, а не per-base.
Неактивен
Правильно, но чтобы создать юзера, находясь в базе, нужно иметь права создания юзера именно в этой базе, вот где не логично Юзер глобальный, а без прав базы шиш тебе)))
Неактивен
В MySQL нет понятия «права создания юзера в этой базе». Есть право «CREATE USER», которое
является глобальным. Оно или есть у текущего пользователя, или нет. Безотносительно баз.
Неактивен