The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Разграничение доступа к БД (mysql)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Разграничение доступа к БД (mysql)"  
Сообщение от lyric on 01-Май-07, 20:43 
Сори, если оффтоп, но более подходящей ветки не нашел.

Итак: имеется сервер mysql.

Задача: Разрешить юзерам просматривать/редактировать/удалять базы (и таблицы в них), владельцами которых они являются (читай - на которые выставлены соответствующие привелегии) и создавать новые БД. Причем, о существовании БД, принадлежащих другим пользователям, они даже догадываться не должны...

Если тестовому юзеру убрать все глобальные привелегии, кроме создания новых БД (локальные - ставить по необходимости), то видны все остальные БД (правда, доступа к ним нет).

Кроме того, при создании БД привелегии на нее для этого юзера автоматом естессно не добавляются...

Единственное, до чего я додумался - отменить для юзера все глобальные привелегии (тогда "чужие" БД не видны) и написать скрипт, создающий БД и прописывающий для нее привелегии. Коряво, конечно...

У кого какие еще соображения?

PS: Предполагается, что юзеры с СУБД будут работать через web-интерфейс (в основном - phpmyadmin)

Заранее спасибо за ответы...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Разграничение доступа к БД (mysql)"  
Сообщение от geekkoo (??) on 02-Май-07, 04:14 
>Сори, если оффтоп, но более подходящей ветки не нашел.
>
>Итак: имеется сервер mysql.
>
>Задача: Разрешить юзерам просматривать/редактировать/удалять базы (и таблицы в них), владельцами которых они
>являются (читай - на которые выставлены соответствующие привелегии) и создавать новые
>БД. Причем, о существовании БД, принадлежащих другим пользователям, они даже догадываться
>не должны...
>

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

>Если тестовому юзеру убрать все глобальные привелегии, кроме создания новых БД (локальные
>- ставить по необходимости), то видны все остальные БД (правда, доступа
>к ним нет).
>
>Кроме того, при создании БД привелегии на нее для этого юзера автоматом
>естессно не добавляются...
>

Из info mysql:

13.5.1.3 `GRANT' Syntax
....
MySQL allows you to grant privileges even on database objects that do
not exist. In such cases, the privileges to be granted must include the
`CREATE' privilege.  _This behavior is by design_, and is intended to
enable the database administrator to prepare user accounts and
privileges for database objects that are to be created at a later time.

*Important*: _MySQL does not automatically revoke any privileges when
you drop a table or database_. However, if you drop a routine, any
routine-level privileges granted for that routine are revoked.

*Note*: the ``_'' and ``%'' wildcards are allowed when specifying
database names in `GRANT' statements that grant privileges at the
global or database levels. This means, for example, that if you want to
use a ``_'' character as part of a database name, you should specify it
as ``\_'' in the `GRANT' statement, to prevent the user from being able
to access additional databases matching the wildcard pattern; for
example, `GRANT ... ON `foo\_bar`.* TO ...'.
....
НАсколько я понимаю, таким образом можно разрешить пользователю создавать базы вида username% с полными правами на них. Кроме того есть ещё такой privilege как show databases, который можно у пользователя отобрать.
>Единственное, до чего я додумался - отменить для юзера все глобальные привелегии
>(тогда "чужие" БД не видны) и написать скрипт, создающий БД и
>прописывающий для нее привелегии. Коряво, конечно...
>

Зато таким образом устраняются возможные конфликты имен баз данных.
>У кого какие еще соображения?
>
>PS: Предполагается, что юзеры с СУБД будут работать через web-интерфейс (в основном
>- phpmyadmin)
>
>Заранее спасибо за ответы...


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Разграничение доступа к БД (mysql)"  
Сообщение от lyric on 02-Май-07, 09:27 
>И потом юзер будет долго втыкать почему не удается создать базу данных
>с каким-нибудь именем, потому что оно уже занято другим пользователем, о
>чём первый пользователь не имеет возможности даже догадаться.

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

>Из info mysql:
>
>13.5.1.3 `GRANT' Syntax
>....
>MySQL allows you to grant privileges even on database objects that do
>
>not exist. In such cases, the privileges to be granted must include
>the
>`CREATE' privilege.  _This behavior is by design_, and is intended to
>
>enable the database administrator to prepare user accounts and
>privileges for database objects that are to be created at a later
>time.
>
>*Important*: _MySQL does not automatically revoke any privileges when
>you drop a table or database_. However, if you drop a routine,
>any
>routine-level privileges granted for that routine are revoked.
>
>*Note*: the ``_'' and ``%'' wildcards are allowed when specifying
>database names in `GRANT' statements that grant privileges at the
>global or database levels. This means, for example, that if you want
>to
>use a ``_'' character as part of a database name, you should
>specify it
>as ``\_'' in the `GRANT' statement, to prevent the user from being
>able
>to access additional databases matching the wildcard pattern; for
>example, `GRANT ... ON `foo\_bar`.* TO ...'.
>....
>НАсколько я понимаю, таким образом можно разрешить пользователю создавать базы вида username с полными правами на них.

Похоже, пока это оптимальное решение...

>Кроме того есть ещё такой privilege
>как show databases, который можно у пользователя отобрать.
Убирал/ставил - пофиг. Если добавлена хоть одна глобальная привелегия - базы показываются (говорит, правда, что таблиц - 0).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Разграничение доступа к БД (mysql)"  
Сообщение от SubGun email(ok) on 02-Май-07, 10:21 
>Логично... Интересно, а как обстоят дела у хостеров? Имена БД (типа forum
>и т.п.) обязательно должны конфликтовать. А нет... Каждый юзер работает со
>своим сервером mysql?
Я работал у хостера одного, базы создаются через скрипт в панели управления. Скрипт сразу задает права на базу и только после этого к ней можно обращаться.

>>НАсколько я понимаю, таким образом можно разрешить пользователю создавать базы вида username с полными правами на них.
>
>Похоже, пока это оптимальное решение...
Никогда не пробовал.

>>Кроме того есть ещё такой privilege
>>как show databases, который можно у пользователя отобрать.
>Убирал/ставил - пофиг. Если добавлена хоть одна глобальная привелегия - базы показываются
>(говорит, правда, что таблиц - 0).
Это точно! Show databases тут не катит.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Разграничение доступа к БД (mysql)"  
Сообщение от lyric on 02-Май-07, 13:30 
>Я работал у хостера одного, базы создаются через скрипт в панели управления.
>Скрипт сразу задает права на базу и только после этого к
>ней можно обращаться.

А, если не секрет, как решаласть проблема с одинаковыми именами БД? <имя_юзера>_<имя_базы>?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Разграничение доступа к БД (mysql)"  
Сообщение от SubGun email(ok) on 02-Май-07, 13:52 
>А, если не секрет, как решаласть проблема с одинаковыми именами БД? <имя_юзера>_<имя_базы>?
Change other name of database :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру