1

Тема: Настройка многопользовательского режима работы с БД

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

2

Re: Настройка многопользовательского режима работы с БД

Pupkin
Копай здесь: $cfg['Servers'][$i]['only_db'].

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

3

Re: Настройка многопользовательского режима работы с БД

Копай здесь: $cfg['Servers'][$i]['only_db'].

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

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

4

Re: Настройка многопользовательского режима работы с БД

Pupkin

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

Нет, пользователь может сам создавать базы, а ты можешь ограничить для него видимость только собственными базами. Запись тебе придется конечно ввести, но это не смертельно, тем более если ты заметил в качестве значения указанной конфигурационной переменной можно использовать массив, и символы обобщения

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

Дашь им права на создание баз данных/таблиц и редактирование/удаление собственных - вот тебе и будут миниадмины smile

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

5

Re: Настройка многопользовательского режима работы с БД

Lokki сказал:

Pupkin

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

Нет, пользователь может сам создавать базы, а ты можешь ограничить для него видимость только собственными базами. Запись тебе придется конечно ввести, но это не смертельно, тем более если ты заметил в качестве значения указанной конфигурационной переменной можно использовать массив, и символы обобщения

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

Дашь им права на создание баз данных/таблиц и редактирование/удаление собственных - вот тебе и будут миниадмины smile

что то у меня не выхожит ты мне хотя бы пример кода показал для нескольких юзеров,да и еще может я глуплю но вот пользователь может видеть кладку привелегии, может можно и это скрыть?

6

Re: Настройка многопользовательского режима работы с БД

Pupkin
Подсоединяешься к базе как root-пользователь. Создаешь во вкладке "Привилегии" нового пользователя, указываешь для него параметры соединения (в т.ч. указываешь хост, задаешь пароль для соединения с mySQL сервером), если хочешь, чтобы он мог создавать базы данных - даешь ему глобальные права на создание (CREATE).
Если хочешь ограничить его рамками одной базы - глобальные права ему не делегируешь, но даешь ему права на предварительно созданную тобой для него базу. Допустим, DATABASE-1.
Если ты не хочешь, чтобы он просматривал чужие базы - в конфиге для него указываешь в качестве значения переменной $cfg['Servers'][$i]['only_db'] = 'DATABASE-1'; ту базу, которая будет отдана ему. Либо как вариант можешь разрешить ему видеть несколько баз: $cfg['Servers'][$i]['only_db'] = array('DATABASE-1', 'DATABASE-2', 'DATABASE-3');

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

7

Re: Настройка многопользовательского режима работы с БД

Lokki сказал:

Pupkin
Подсоединяешься к базе как root-пользователь. Создаешь во вкладке "Привилегии" нового пользователя, указываешь для него параметры соединения (в т.ч. указываешь хост, задаешь пароль для соединения с mySQL сервером), если хочешь, чтобы он мог создавать базы данных - даешь ему глобальные права на создание (CREATE).
Если хочешь ограничить его рамками одной базы - глобальные права ему не делегируешь, но даешь ему права на предварительно созданную тобой для него базу. Допустим, DATABASE-1.
Если ты не хочешь, чтобы он просматривал чужие в базе в конфиге для него указываешь в качестве значения переменной $cfg['Servers'][$i]['only_db'] = 'DATABASE-1'; ту базу, которая будет отдана ему. Либо как вариант можешь разрешить ему видеть несколько баз: $cfg['Servers'][$i]['only_db'] = array('DATABASE-1', 'DATABASE-2', 'DATABASE-3');

Спасибо. Это я понял, а вто что делать если у тебя несколько пользователей.

8

Re: Настройка многопользовательского режима работы с БД

Pupkin

Спасибо. Это я понял, а вто что делать если у тебя несколько пользователей.

Повторяешь описанную процедуру для каждого пользователя.

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

9

Re: Настройка многопользовательского режима работы с БД

Повторяешь описанную процедуру для каждого пользователя.

вот это и не получаеться.
как должен выглядеть код, для нескольких пользователей?

10

Re: Настройка многопользовательского режима работы с БД

Pupkin
Что у тебя не получается? Заполнить массив?
Если ты внимательнее ознакомишься с содержимым конфигурационного файла, то увидишь что там описаны многомерные массивы, которые и содержат необходимые для многопользовательской работы данные:
$i++;
$cfg['Servers'][$i]['host'] = '';
$cfg['Servers'][$i]['port']  = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = FALSE;
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['only_db'] = '';
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['pmadb'] = ''; // 'phpmyadmin' - see scripts/create_tables.sql
$cfg['Servers'][$i]['bookmarktable'] = ''; // 'pma_bookmark'
$cfg['Servers'][$i]['relation'] = ''; // 'pma_relation'
$cfg['Servers'][$i]['table_info'] = ''; // 'pma_table_info'
$cfg['Servers'][$i]['table_coords'] = ''; // 'pma_table_coords'
$cfg['Servers'][$i]['pdf_pages'] = ''; // 'pma_pdf_pages'
$cfg['Servers'][$i]['column_info'] = ''; // 'pma_column_info'
$cfg['Servers'][$i]['history'] = ''; // 'pma_history'
$cfg['Servers'][$i]['verbose_check'] = TRUE;
$cfg['Servers'][$i]['AllowRoot'] = TRUE;
$cfg['Servers'][$i]['AllowDeny']['order'] = '';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array();

Заполняешь для каждого пользователя свой массив, сохраняешь и все.

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

11

Re: Настройка многопользовательского режима работы с БД

Lokki сказал:

Pupkin
Что у тебя не получается? Заполнить массив?
Если ты внимательнее ознакомишься с содержимым конфигурационного файла, то увидишь что там описаны многомерные массивы, которые и содержат необходимые для многопользовательской работы данные:
$i++;
$cfg['Servers'][$i]['host'] = '';
$cfg['Servers'][$i]['port']  = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = FALSE;
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['only_db'] = '';
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['pmadb'] = ''; // 'phpmyadmin' - see scripts/create_tables.sql
$cfg['Servers'][$i]['bookmarktable'] = ''; // 'pma_bookmark'
$cfg['Servers'][$i]['relation'] = ''; // 'pma_relation'
$cfg['Servers'][$i]['table_info'] = ''; // 'pma_table_info'
$cfg['Servers'][$i]['table_coords'] = ''; // 'pma_table_coords'
$cfg['Servers'][$i]['pdf_pages'] = ''; // 'pma_pdf_pages'
$cfg['Servers'][$i]['column_info'] = ''; // 'pma_column_info'
$cfg['Servers'][$i]['history'] = ''; // 'pma_history'
$cfg['Servers'][$i]['verbose_check'] = TRUE;
$cfg['Servers'][$i]['AllowRoot'] = TRUE;
$cfg['Servers'][$i]['AllowDeny']['order'] = '';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array();

Заполняешь для каждого пользователя свой массив, сохраняешь и все.

может я тупой ли еше чего. скинь еслине трудно confic.inc.php что бы было на несколько пользователей например admin,user,euser1

12

Re: Настройка многопользовательского режима работы с БД

Pupkin
Отправил

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

13

Re: Настройка многопользовательского режима работы с БД

Lokki а может посоветовать товарищу использовать http или cookie авторизацию? Тогда блок для серверов в конфигурации будет только один. И пользователи будут ограничены самим MySQL сервером. И получат только то, на что у них есть права.

14

Re: Настройка многопользовательского режима работы с БД

Rage Steel
ну разумеется wink
Pupkin
можно ограничиться более лаконичной записью:

/* Servers configuration */
$i = 0;

/* Server localhost (http:root) [1] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

15

Re: Настройка многопользовательского режима работы с БД

$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.
$i++;
$cfg['Servers'][$i]['host']          = 'localhost'; // MySQL hostname or IP address
$cfg['Servers'][$i]['port']          = '';          // MySQL port - leave blank for default port
$cfg['Servers'][$i]['socket']        = '';          // Path to the socket - leave blank for default socket
$cfg['Servers'][$i]['connect_type']  = 'tcp';       // How to connect to MySQL server ('tcp' or 'socket')
$cfg['Servers'][$i]['extension']     = 'mysql';     // The php MySQL extension to use ('mysql' or 'mysqli')
$cfg['Servers'][$i]['compress']      = FALSE;       // Use compressed protocol for the MySQL connection
                                                    // (requires PHP >= 4.3.0)
$cfg['Servers'][$i]['controluser']   = 'root';          // MySQL control user settings
                                                    // (this user must have read-only
$cfg['Servers'][$i]['controlpass']   = '1';          // access to the "mysql/user"
                                                    // and "mysql/db" tables).
                                                    // The controluser is also
                                                    // used for all relational
                                                    // features (pmadb)
$cfg['Servers'][$i]['auth_type']     = 'cookie';    // Authentication method (config, http or cookie based)?
$cfg['Servers'][$i]['user']          = 'root';      // MySQL user
$cfg['Servers'][$i]['password']      = '';          // MySQL password (only needed
                                                    // with 'config' auth_type)
$cfg['Servers'][$i]['only_db']       = '';          // If set to a db-name, only
                                                    // this db is displayed in left frame
                                                    // It may also be an array of db-names, where sorting order is relevant.
$cfg['Servers'][$i]['verbose_check'] = TRUE;        // set to FALSE if you know that your pma_* tables
                                                    // are up to date. This prevents compatibility
                                                    // checks and thereby increases performance.
$cfg['Servers'][$i]['AllowRoot']     = TRUE;        // whether to allow root login
$cfg['Servers'][$i]['AllowDeny']['order']           // Host authentication order, leave blank to not use
                                     = '';
$cfg['Servers'][$i]['AllowDeny']['rules']           // Host authentication rules, leave blank for defaults
                                     = array();

$i = 1;
$i++;
$cfg['Servers'][$i]['host']            = '';
$cfg['Servers'][$i]['port']            = '';
$cfg['Servers'][$i]['socket']          = '';
$cfg['Servers'][$i]['connect_type']    = 'tcp';
$cfg['Servers'][$i]['extension']       = 'mysql';
$cfg['Servers'][$i]['compress']        = FALSE;
$cfg['Servers'][$i]['controluser']     = '';
$cfg['Servers'][$i]['controlpass']     = '';
$cfg['Servers'][$i]['auth_type']       = 'cookie';
$cfg['Servers'][$i]['user']            = 'proba';
$cfg['Servers'][$i]['password']        = '';
$cfg['Servers'][$i]['only_db']         = 'site';
$cfg['Servers'][$i]['verbose']         = '';
$cfg['Servers'][$i]['pmadb']           = ''; // 'phpmyadmin' - see scripts/create_tables.sql
$cfg['Servers'][$i]['bookmarktable']   = ''; // 'pma_bookmark'
$cfg['Servers'][$i]['relation']        = ''; // 'pma_relation'
$cfg['Servers'][$i]['table_info']      = ''; // 'pma_table_info'
$cfg['Servers'][$i]['table_coords']    = ''; // 'pma_table_coords'
$cfg['Servers'][$i]['pdf_pages']       = ''; // 'pma_pdf_pages'
$cfg['Servers'][$i]['column_info']     = ''; // 'pma_column_info'
$cfg['Servers'][$i]['history']         = ''; // 'pma_history'
$cfg['Servers'][$i]['verbose_check']   = TRUE;
$cfg['Servers'][$i]['AllowRoot']       = TRUE;
$cfg['Servers'][$i]['AllowDeny']['order']
                                       = '';
$cfg['Servers'][$i]['AllowDeny']['rules']
                                       = array();
я сделал так и нечего не получаеться, пользователь видет все базы

16

Re: Настройка многопользовательского режима работы с БД

Pupkin
А ты не давай рядовым глобальные права - наличие таковых у них, как правило, ни к чему хорошему не приводит. Далее - ограничь привилегии пользователя рамками определенной для него базой/базами. Проверь, чтобы у него не было привилегий для других баз данных (обрати внимание в т.ч. на права SELECT). В твоем случае пользователь 'proba' не должен иметь глобальных прав, а также других прав кроме как на базу данных 'site'.

И еще - как правильно сказал Rage Steel не юзай 'config' - аутентификацию, выбери, как вариант - 'http'. Это избавит тебя от необходимости множественного заполнения блоков для каждого пользователя персонально, и в плане безопасности выглядит предпочтительнее.

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

17

Re: Настройка многопользовательского режима работы с БД

Добрый день!
Для реализации subj был установлен PhpMyAdmin с типом авторизации HTTP. Для чтения данных из базы был заведен пользователь с правами Read-only. В конфигурационном файле заполнены соответствующие поля: $cfg['Servers'][$i]['controluser'] и $cfg['Servers'][$i]['controlpass'].

Однако авторизация в PMA проходит только для пользователя root. Никакие другие логин/пароль PMA не принимает.

Хотя из командной строки путем #mysql -u USER -p вход в mysql происходит как под пользователем Read-only, так и под пользователями, созданными в PMA под Root.
.htaccess для каталога с PMA отсутствует.

Ошибочность ввода логина и пароля Read-only исключена. Подскажите, пожалуйста, возможное решение проблемы.
______________
ОС FreeBSD 6.0
phpMyAdmin 2.8.0.2

18

Re: Настройка многопользовательского режима работы с БД

Для чтения данных из базы был заведен пользователь с правами Read-only. В конфигурационном файле заполнены соответствующие поля: $cfg['Servers'][$i]['controluser'] и $cfg['Servers'][$i]['controlpass'].

Не заполняй эти переменные.
Почитай также здесь о возможных проблемах при использовании переменных [controluser]
/Администратор: Зачем создавать отдельную тему, когда уже есть топик по данной тематике: http://forum.php-myadmin.ru/viewtopic.php?pid=305#p305 Внимательнее!/

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

19

Re: Настройка многопользовательского режима работы с БД

Не заполняй эти переменные.

Т.е. как это не заполнять эти поля? Я так понял, что используя эти логин/пасс PMA проводит авторизацию? Или нет?

Почитай также здесь о возможных проблемах при использовании переменных [controluser]

Прочитал. Ответа на свой вопрос не нашел.

Завел пользователя read-only, используя приведенный пример из раздела "Использование режимов аутентификации". Убрал, как было посоветовано, controluser и controlpass. Авторизация проходит только под root.

20

Re: Настройка многопользовательского режима работы с БД

ALexander

Завел пользователя read-only, используя приведенный пример из раздела "Использование режимов аутентификации". Убрал, как было посоветовано, controluser и controlpass. Авторизация проходит только под root.

Я делал все как описано на php-myadmin.ru - все работает. Вот мой конфиг:
<?php
$i = 0;
/* Server localhost (http:controluser) [1] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* End of servers configuration */

$cfg['blowfish_secret'] = '44218c7f513da2.45082943';
?>

21 (изменено: Pupkin, 2006-03-26 22:29:20)

Re: Настройка многопользовательского режима работы с БД

ALexander

Завел пользователя read-only, используя приведенный пример из раздела "Использование режимов аутентификации". Убрал, как было посоветовано, controluser и controlpass. Авторизация проходит только под root.
Я делал все как описано на php-myadmin.ru - все работает. Вот мой конфиг:
<?php
$i = 0;
/* Server localhost (http:controluser) [1] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* End of servers configuration */

$cfg['blowfish_secret'] = '44218c7f513da2.45082943';
?>

да ысё так работает, вот только если для нескольких юзеров то начанаються проблемы

22 (изменено: Rash, 2006-03-26 23:54:37)

Re: Настройка многопользовательского режима работы с БД

Pupkin

да ысё так работает, вот только если для нескольких юзеров то начанаються проблемы

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

В общем решение твоей проблемы заключается в походе на mysql.com, либо за книгой по MySQL (советую для изучения почитать Поля Дюбуа).

23

Re: Настройка многопользовательского режима работы с БД

ну что вам сказать после всего прочитаного я как ,, кипитильник,, нифига не понял  , может чтото  и осталось , думаю что осталось  и када нить  мне понадобиться но миня интиресует такой вопрос : вот для миня чтоб по шагово чтото зделать в БД  ну пример  с чего начинать ?

24

Re: Настройка многопользовательского режима работы с БД

Alex

с чего начинать

Перво-наперво учить русский. В соответствии с правилами данного форума писать здесь как попало запрещено. Более того если ты хочешь получить рекомендации по изучению баз данных - создай отдельную тему в разделе "Флейм" и там спрашивай. Здесь рассматриваются проблемы многопользовательской установки phpMyAdmin. Это предупреждение.

Что касается изучения баз данных, то можешь воспользоваться советом товарища Rash - книги Поля Дюбуа, действительно толковые и дают хорошее представление о СУБД MySQL

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

25 (изменено: next40, 2006-04-21 22:48:07)

Re: Настройка многопользовательского режима работы с БД

Всем привет
подскажите как мне сделать чтобы пользователь видел только свою базу данных и ему были недоступны глобальные функции потипу как в главном меню при входе:
Показать системные переменные MySQL
Показать процессы
Кодировки и сравнения
Storage Engines
Базы Данных