понедельник, 1 марта 2010 г.

Графический дизайнер связей в PhpMyAdmin

Оказывается есть и такое! Но чтобы включить его и еще несколько «фич», нужно немного потрудиться.
Сразу скажу, что для настройки PMA я использую скрипт, который идет в поставке. Чтобы попасть в него, нужно зайти по адресу: http://ваш_сервер/дистрибутив_PhpMyAdmin/setup/
Не буду разжевывать, как им пользоваться, так как блог не предназначен для людей с голубиными мозгами. Создав сервер и настроив его параметры, нужно перейти на вкладку «Расширения PMA»

Вот оно как выглядит:
Скрипт конфигурирования PhpMyAdmin
«База данных PMA» — это база для хранения всякой требухи этих самых расширений, среди которых есть графический дизайнер связей. Иногда она создается сама, иногда ее нет, по какому принципу это происходит, я так и не понял. Чтобы создать ее, можно использовать  скриптик create_tables.sql, который находится в дистрибутиве в папке scripts/, запустив скрипт, вы создадите базу и таблички в ней.
Ссылка на подробности там есть, но могу написать и я — http://wiki.phpmyadmin.net/pma/pmadb.
Зайдя  по ссылке  выделенный пользователь PMA и как его создать, можно узнать, зачем нужен «Выделенный пользователь».  Если короче, то вот код для создания, для MySQL 4.0.2 или новее:
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
    Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
    Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
    File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
    Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
    Execute_priv, Repl_slave_priv, Repl_client_priv
    ) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
    ON mysql.tables_priv TO 'pma'@'localhost';
Юзер будет называться pma, а пароль будет pmapass.
А вот код, выдающий ему необходимые права:
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
Далее нужно указать названия таблиц в служебной базе. Если базу создавали скриптом из поставки, то используйте значения по умолчанию.
После этого нужно сохранить конфигурацию, качнуть новый конфиг, и положить его вместо стандартного конфига в PMA.
По сути, можно и руками вписать в конфиг все это. А точнее:
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$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]['designer_coords'] = 'pma_designer_coords';
А вот далее идет странность: если верить доккументации, то получается, все должно уже заработать. Однако у меня не работало, и после рестарта СуБД не работало. Заработало только после ребута. Причем и на windows и на linux.

8 комментариев:

  1. Е-мое, уже столько времени парюсь, не выходит! Все, что написано, сделала, захожу в phpmyadmin, пишет, что Дополнительные возможности для работы со связанными таблицами недоступны. Для определения причины нажмите здесь. Нажимаю это здесь и вот, что мне вывело
    $cfg['Servers'][$i]['pmadb'] ... OK
    $cfg['Servers'][$i]['relation'] ... Не готово [ Документация ]
    Основные возможности связей: Недоступно

    $cfg['Servers'][$i]['table_info'] ... Не готово [ Документация ]
    Показать возможности: Недоступно

    $cfg['Servers'][$i]['table_coords'] ... Не готово [ Документация ]
    $cfg['Servers'][$i]['pdf_pages'] ... Не готово [ Документация ]
    Создание PDF-схемы: Недоступно

    $cfg['Servers'][$i]['column_info'] ... OK
    Отображать комментарии столбцов: Доступно
    Преобразование: Доступно

    $cfg['Servers'][$i]['bookmarktable'] ... OK
    Созданные закладки: Доступно

    $cfg['Servers'][$i]['history'] ... Не готово [ Документация ]
    История SQL-запросов: Недоступно

    $cfg['Servers'][$i]['designer_coords'] ... Не готово [ Документация ]
    Дизайнер: Недоступно

    $cfg['Servers'][$i]['tracking'] ... Не готово [ Документация ]

    И что делать?
    Слежение: Недоступно

    ОтветитьУдалить
  2. Мне помогал только ребут. Как быть на сервере — не представляю.

    ОтветитьУдалить
  3. phpmyadmin БД свою создал?

    ОтветитьУдалить
  4. Да, он сам создает свою базу

    ОтветитьУдалить
  5. нужно просто выйти с админа и сново войти :) я тоже парился 3 часа, а выход был так прост :)

    ОтветитьУдалить
  6. Боин, ну точно! Перезаход помогает)

    ОтветитьУдалить
  7. Умный, бля. Про голубиные мозги вспоминай, когда пишешь слова доккументация (надо с одной "К") и apocalepse (правильно писать "Apocalypse").

    Всех благ. Чужие блоги люди читают лишь для того, чтобы пополнить свои знания (не синоним "голубиные мозги"), а не для того, чтобы порадоваться за тебя, как у тебя все охуенно получилось.

    Бай, чувак. Живи с миром.

    ОтветитьУдалить
  8. 2perzident Нашел опечатку и сразу писька встала да? :-) Каждую глупость даже комментировать не хочется, ты просто обычный пиздун интернетный. Привет и пошел нахуй :-D

    ОтветитьУдалить