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_%".*

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

Зачем?
Mysql - это рсубд (обычно с одним пользователем - web), а не учётная система. Под случай шаред хостинга это тоже не подходит.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я понял, ну какая то оболочка программная нужна к которой и придется слать запросы на создание БД, она должна также и доступом распоряжаться имхо.

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

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

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

А как ті хотел?

пользователь должен иметь право видеть все БД, раз он может дать права новому пользователю.

Как дать права на то, чего не видишь сам?

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

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

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

открой пхпмайадмин и наставь нужных галочек при создании баз/пользаков - оно покажет какими запросами это делается.

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

аааа... тогда просто возьми докер и крути там в контейнерах что надо.

deep-purple ★★★★★
()
Последнее исправление: deep-purple (всего исправлений: 1)

посмотри что такое rbac например, можно и другими способами.

anonymous
()
Ответ на: комментарий от deep-purple

умеет оно разграничивать прльзаков и базы.

Но это не значит, что из механизмов работы с юзерами СУБД надо делать систему учёток.

crutch_master ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.