Тема: Настройка многопользовательского режима работы с БД
У меня такой вопрос. Как сделать так что бы можно было завести несколько пользователей, так что бы они могли работать с базами. но не видеть базы других пользователей.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум PHP-MyAdmin.RU → Настройка phpMyAdmin → Настройка многопользовательского режима работы с БД
Чтобы отправить ответ, вы должны войти или зарегистрироваться
У меня такой вопрос. Как сделать так что бы можно было завести несколько пользователей, так что бы они могли работать с базами. но не видеть базы других пользователей.
Pupkin
Копай здесь: $cfg['Servers'][$i]['only_db'].
Копай здесь: $cfg['Servers'][$i]['only_db'].
т.е получаеться так что я одному пользователю каждый раз должен сам создавать базу и её вписавать?
мне надо просто создавать автономных пользователей , как бы миниадмининов., но так что бы они не зависили друг от друга
Pupkin
т.е получаеться так что я одному пользователю каждый раз должен сам создавать базу и её вписавать?
Нет, пользователь может сам создавать базы, а ты можешь ограничить для него видимость только собственными базами. Запись тебе придется конечно ввести, но это не смертельно, тем более если ты заметил в качестве значения указанной конфигурационной переменной можно использовать массив, и символы обобщения
мне надо просто создавать автономных пользователей , как бы миниадмининов., но так что бы они не зависили друг от друга
Дашь им права на создание баз данных/таблиц и редактирование/удаление собственных - вот тебе и будут миниадмины
Pupkin
т.е получаеться так что я одному пользователю каждый раз должен сам создавать базу и её вписавать?
Нет, пользователь может сам создавать базы, а ты можешь ограничить для него видимость только собственными базами. Запись тебе придется конечно ввести, но это не смертельно, тем более если ты заметил в качестве значения указанной конфигурационной переменной можно использовать массив, и символы обобщения
мне надо просто создавать автономных пользователей , как бы миниадмининов., но так что бы они не зависили друг от друга
Дашь им права на создание баз данных/таблиц и редактирование/удаление собственных - вот тебе и будут миниадмины
что то у меня не выхожит ты мне хотя бы пример кода показал для нескольких юзеров,да и еще может я глуплю но вот пользователь может видеть кладку привелегии, может можно и это скрыть?
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');
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');
Спасибо. Это я понял, а вто что делать если у тебя несколько пользователей.
Pupkin
Спасибо. Это я понял, а вто что делать если у тебя несколько пользователей.
Повторяешь описанную процедуру для каждого пользователя.
Повторяешь описанную процедуру для каждого пользователя.
вот это и не получаеться.
как должен выглядеть код, для нескольких пользователей?
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();
Заполняешь для каждого пользователя свой массив, сохраняешь и все.
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
Pupkin
Отправил
Lokki а может посоветовать товарищу использовать http или cookie авторизацию? Тогда блок для серверов в конфигурации будет только один. И пользователи будут ограничены самим MySQL сервером. И получат только то, на что у них есть права.
Rage Steel
ну разумеется
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'] = '';
$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();
я сделал так и нечего не получаеться, пользователь видет все базы
Pupkin
А ты не давай рядовым глобальные права - наличие таковых у них, как правило, ни к чему хорошему не приводит. Далее - ограничь привилегии пользователя рамками определенной для него базой/базами. Проверь, чтобы у него не было привилегий для других баз данных (обрати внимание в т.ч. на права SELECT). В твоем случае пользователь 'proba' не должен иметь глобальных прав, а также других прав кроме как на базу данных 'site'.
И еще - как правильно сказал Rage Steel не юзай 'config' - аутентификацию, выбери, как вариант - 'http'. Это избавит тебя от необходимости множественного заполнения блоков для каждого пользователя персонально, и в плане безопасности выглядит предпочтительнее.
Добрый день!
Для реализации 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
Для чтения данных из базы был заведен пользователь с правами Read-only. В конфигурационном файле заполнены соответствующие поля: $cfg['Servers'][$i]['controluser'] и $cfg['Servers'][$i]['controlpass'].
Не заполняй эти переменные.
Почитай также здесь о возможных проблемах при использовании переменных [controluser]
/Администратор: Зачем создавать отдельную тему, когда уже есть топик по данной тематике: http://forum.php-myadmin.ru/viewtopic.php?pid=305#p305 Внимательнее!/
Не заполняй эти переменные.
Т.е. как это не заполнять эти поля? Я так понял, что используя эти логин/пасс PMA проводит авторизацию? Или нет?
Почитай также здесь о возможных проблемах при использовании переменных [controluser]
Прочитал. Ответа на свой вопрос не нашел.
Завел пользователя read-only, используя приведенный пример из раздела "Использование режимов аутентификации". Убрал, как было посоветовано, controluser и controlpass. Авторизация проходит только под root.
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';
?>
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';
?>
да ысё так работает, вот только если для нескольких юзеров то начанаються проблемы
Pupkin
да ысё так работает, вот только если для нескольких юзеров то начанаються проблемы
ничего не знаю, что у тебя за проблемы... у меня phpMyAdmin последней версии в многопользовательском режиме работает без проблем с несколькими пользователями. Использую http-идентификацию, при соединении через разных пользователей - базы для них отображаются только те, на которые они имеют права.
В общем решение твоей проблемы заключается в походе на mysql.com, либо за книгой по MySQL (советую для изучения почитать Поля Дюбуа).
ну что вам сказать после всего прочитаного я как ,, кипитильник,, нифига не понял , может чтото и осталось , думаю что осталось и када нить мне понадобиться но миня интиресует такой вопрос : вот для миня чтоб по шагово чтото зделать в БД ну пример с чего начинать ?
Alex
с чего начинать
Перво-наперво учить русский. В соответствии с правилами данного форума писать здесь как попало запрещено. Более того если ты хочешь получить рекомендации по изучению баз данных - создай отдельную тему в разделе "Флейм" и там спрашивай. Здесь рассматриваются проблемы многопользовательской установки phpMyAdmin. Это предупреждение.
Что касается изучения баз данных, то можешь воспользоваться советом товарища Rash - книги Поля Дюбуа, действительно толковые и дают хорошее представление о СУБД MySQL
Всем привет
подскажите как мне сделать чтобы пользователь видел только свою базу данных и ему были недоступны глобальные функции потипу как в главном меню при входе:
Показать системные переменные MySQL
Показать процессы
Кодировки и сравнения
Storage Engines
Базы Данных
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум PHP-MyAdmin.RU → Настройка phpMyAdmin → Настройка многопользовательского режима работы с БД
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.