LINUX.ORG.RU
ФорумAdmin

MySQL привилегия CREATE USER

 


1

1

Не могу найти нигде в документации: почему-то при создании пользователя, которому даётся привилегия CREATE USER, такой пользователь получает «автоматически» право на просмотр списка всех баз данных на сервере. Ну то есть я создаю пользователя вот так:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'mypass1';
GRANT CREATE USER ON *.* TO `user1`@`localhost` WITH GRANT OPTION;

…и в этот момент он получает право видеть список всех БД. Это нормально? Можно ли вообще как-то выдать право пользователю создавать других пользователей, но при этом видеть базы данных только по какому-либо префиксу («user1_%» в моём случае)? При этом написать привилегию как-то так:

GRANT CREATE USER ON "user1_%".*

…не получается - типа это глобальная привилегия.

Ответ на: комментарий от crutch_master

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

Novascriptum ()
Ответ на: комментарий от Novascriptum

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

Такое можно настроить в mysql. Но в ОП ты хочешь большего.

goingUp ★★★★★ ()
Ответ на: комментарий от goingUp

Ну вот я могу настроить, чтобы один пользователь «видел» только свои базы данных и мог их создавать по определённому префиксу. Но не могу сделать, чтобы он при этом мог создавать других пользователей - и не получил одновременно доступ к другим базам данных (на уровне их чтения).

Novascriptum ()
Ответ на: комментарий от Novascriptum

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

goingUp ★★★★★ ()
Ответ на: комментарий от XoFfiCEr

Я, наверное, неверно выразился. Приложение в процессе своей работы должно создавать свой экземпляр с отдельной базой данных. И, соответственно, mysql-пользователем, который имеет доступ к этой базе.

И самих приложений может быть несколько. Соответственно, у меня есть некие административные пользователи mysql (если можно так выразиться), которые имеют права на свои БД по префиксу и на создание других пользователей mysql, а также есть вот эти вспомогательные пользователи mysql, у каждого из которых доступ только на свою базу.

Вопрос касательно «административных» пользователей mysql, у которых права на создание других пользователей и на свои базы (по префиксу). Если я даю им привилегию CREATE USER, они начинают видеть все базы (в т.ч. пользователей других приложений).

Novascriptum ()
Последнее исправление: Novascriptum (всего исправлений: 1)
Ответ на: комментарий от Novascriptum

Делегируй создание юзеров/бд какому-нибудь админу.
Впрочем делать из mysql двузвенку-коммуналку - такая себе идея.

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от PunkoIvan

Мне не надо, чтобы он давал права другому пользователю на то, чего не имеет сам. Он видит, например, базы по шаблону «appname%». И должен создать пользователя, который видит только базы по подшаблону «appname_user1_%».

Novascriptum ()