один phpmyadmin для всех

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

один phpmyadmin для всех

Сообщение BigBrother »

день добрый.
Скачал phpmyadmin с офф, сайта. Захожу через веб, логинусь от рута, все работает.
Есть задача создать пользователей, у которых будет доступ только к своей базе, в которой они могут делать что угодно. Например: для пользователя user1, доступна база user1 и он может создавать в ней новые базы с префиксом user1_xxx и их уже удалять и делать все что угодно. Соседние базы данных он не видит, и свою, корневую базу user1, удалить не может.
Сейчас стоит centos 5.5. Когда создаю юзера, и ставлю хотя бы одну из галок в поле (Глобальные привилегии (Отметить все / Снять выделение) он начинает видеть все базы данных. Если там галку не ставить, он видит только свою, но создать новые базы данных со своим префиксом не может.
В убунту ставил пхпмайадмин через apt-get install, затем создавал через phpmyadmin пользоватлей и все работает при тех же действиях.
В чем затык и/или где почитать?

Как временное решение, можно для каждого юзера использовать свой, отдельный phpmyadmin, настроенный показывать только одну, конкретную базу данных.
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: один phpmyadmin для всех

Сообщение Poor Fred »

BigBrother писал(а):
03.11.2010 16:12
Когда создаю юзера, и ставлю хотя бы одну из галок в поле (Глобальные привилегии (Отметить все / Снять выделение) он начинает видеть все базы данных. Если там галку не ставить, он видит только свою, но создать новые базы данных со своим префиксом не может.

Так тебе что нужно? Чтобы пользователь создавал базы или таблицы только в свое базе? Если первое, то нужно дать новому пользователю глобальну привилегию CREATE. А если второе - создаешь пользователя и ставишь галочку "Создать для пользователя новую базу данных и предоставить на нее полные привилегии" (ну как-то так).
Убить всех человеков!
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: один phpmyadmin для всех

Сообщение BigBrother »

Poor Fred писал(а):
04.11.2010 06:27
Так тебе что нужно? Чтобы пользователь создавал базы или таблицы только в свое базе?

1ое надо. Чтобы он мог создавать базы, и эти базы видел только этот пользователь

Poor Fred писал(а):
04.11.2010 06:27
Если первое, то нужно дать новому пользователю глобальну привилегию CREATE.

BigBrother писал(а):
03.11.2010 16:12
Когда создаю юзера, и ставлю хотя бы одну из галок в поле (Глобальные привилегии (Отметить все / Снять выделение) он начинает видеть все базы данных.

CREATE относится как раз к этому полю! Я ставлю галку, и видно все базы...
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: один phpmyadmin для всех

Сообщение SLEDopit »

ставьте пользователю user на базы user\_% права на SELECT/CREATE/DROP/etc. Тогда пользователь сможет смотреть/создавать/удалять/etc базы только со своим префиксом, а остальные будут лишены такой возможности.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: один phpmyadmin для всех

Сообщение BigBrother »

Спасибо, помогло "Предоставить полные привилегии на базы данных подпадающие под шаблон (имя пользователя\_%)".
Вопрос теперь такой: как разрешить пользователю удалять свои базы? Он может делать все, кроме удаления базы данных.
DROP из глобальных привилегий не помогает, да и к тому же, как я уже писал выше, юзер начинает видеть соседние базы.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: один phpmyadmin для всех

Сообщение SLEDopit »

Код: Выделить всё

 $ mysql -u test -ppassword -e "SHOW DATABASES;"
Database
information_schema
test_cool
test_main
 $ mysql -u test -ppassword -e "CREATE DATABASE test_test;"
 $ mysql -u test -ppassword -e "SHOW DATABASES;"
Database
information_schema
test_cool
test_main
test_test
 $ mysql -u test -ppassword -e "DROP DATABASE test_test;"
 $ mysql -u test -ppassword -e "SHOW DATABASES;"
Database
information_schema
test_cool
test_main
 $ mysql -u serg -pPa$$w0rd -e "SHOW DATABASES;"
Database
information_schema
serg_main
 $ mysql -u test -ppassword -e "SHOW GRANTS;"
Grants for test@localhost
GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '---'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `test\\_%`.* TO 'test'@'localhost'
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: один phpmyadmin для всех

Сообщение BigBrother »

Через консоль у меня тоже работает удаление баз данных, которые создал тестовый юзер.
А вот phpmyadmin скрыл вкладку "удалить базу данных", а если через его интерфейс ввода команда, он говорит что "команда drop database (удалить базу данных) отключена".
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: один phpmyadmin для всех

Сообщение BigBrother »

вопрос решен.
в папке phpmyadmin/libraries/config.default.php есть опция $cfg['AllowUserDropDatabase'] = false
ставим true, и простые смертные смогу удалять свои базы данных (появляется закладка "удалить")
:)
Спасибо сказали: