>Сори, если оффтоп, но более подходящей ветки не нашел.
>
>Итак: имеется сервер 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)
>
>Заранее спасибо за ответы...