Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> phpmyadmin

Настройка phpmyadmin

Автор: arksu.


Как то раз зашел я на сайт разработчиков phpmyadmin - www.phpmyadmin.net, походил по ссылкам и увидел там одну хитрую фишку - Дизайнер таблиц (pma.cihar.com/trunk-config/). И решил во чтобы то ни стало ее у себя заюзать.



После получаса копания мануалов стало понятно для того чтобы ее заюзать нужно создать отдельную базу для phpmyadmin в которой она хранит свои данные:
1. добавить служебную базу данных phpmyadmin
2. исправить конфиг config.inc.php - для работы с этой БД

я не стал ставить из портов, все равно phpmyadmin - это всего лишь набор php скриптов и ничего здесь не компилится по большому счету. поэтому скачал свежую версию, на момент написания статьи это 3.1.0-rc1 да и хотелось "идти в ногу с прогрессом" (хотя уже доступна и 3.2.0 правда девелоп  :)

Чтобы добавить базу - в составе phpmyadmin есть скрипты, лежат они в папке scripts каталога phpmyadmin
[root@ukgw phpmyadmin ]# cd /usr/local/www/phpmyadmin/scripts/
[root@ukgw scripts ]# ll
total 92
-rw-r--r-- 1 root wheel 1,8K 18 ноя 04:23 check_lang.php
-rwxr-xr-x 1 root wheel 400B 18 ноя 04:23 convertcfg.pl
-rwxr-xr-x 1 root wheel 7,9K 18 ноя 04:23 create-release.sh
-rw-r--r-- 1 root wheel 5,7K 18 ноя 04:23 create_tables.sql
-rw-r--r-- 1 root wheel 2,7K 18 ноя 04:23 decode_bug.php
-rwxr-xr-x 1 root wheel 1,1K 18 ноя 04:23 find_unused_messages.sh
-rwxr-xr-x 1 root wheel 2,1K 18 ноя 04:23 lang-cleanup.sh
-rwxr-xr-x 1 root wheel 392B 18 ноя 04:23 remove_control_m.sh
-rw-r--r-- 1 root wheel 1,9K 18 ноя 04:23 signon.php
-rwxr-xr-x 1 root wheel 4,9K 18 ноя 04:23 upgrade.pl
-rw-r--r-- 1 root wheel 6,0K 18 ноя 04:23 upgrade_tables_mysql_4_1_2+.sql

здесь нам интересно всего 2 файла
create_tables.sql - создание таблиц
upgrade_tables_mysql_4_1_2+.sql - их апгрейд под версию мускула 4.1 и выше ( я использую 5.1 - поэтому необходимо проапгрейдить )

[root@ukgw scripts ]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5212
Server version: 5.1.26-rc FreeBSD port: mysql-server-5.1.26

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> source create_tables.sql
...........................................
mysql> source upgrade_tables_mysql_4_1_2+.sql

база создана, по дефолту называется phpmyadmin. теперь необходимо произвести еще пару действий. вот выдержка из документации

The following example assumes you want to use pma as the controluser and pmapass as the controlpass, but this is only an example: use something else in your file! Input these statements from the phpMyAdmin SQL Query window or mysql command–line client.
Of course you have to replace localhost with the webserver's host if it's not the same as the MySQL server's one.
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';
If you want to use the many new relation and bookmark features:
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';


то бишь нам нужно выполнить еще несколько запросов:
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';

и еще один (тут подставляем имя базы phpmyadmin)
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';

осталось поправить конфиг самого phpmyadmin - чтобы он увидел базу =)
приведу свой файл config.inc.php
<?php
/* Servers configuration */
$i = 0;

/* Server localhost (config:root) [1] */
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '****';


$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['compress'] = false;

/* rajk - for blobstreaming */
$cfg['Servers'][$i]['bs_garbage_threshold'] = 50;
$cfg['Servers'][$i]['bs_repository_threshold'] = '32M';
$cfg['Servers'][$i]['bs_temp_blob_timeout'] = 600;
$cfg['Servers'][$i]['bs_temp_log_threshold'] = '32M';

/* Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; // указали базу
$cfg['Servers'][$i]['controluser'] = 'pma'; // юзер для работы с базой
$cfg['Servers'][$i]['controlpass'] = 'pmapass'; //  его пасс

// ну а дальше названия служебных таблиц
$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';
/* Contrib / Swekey authentication */
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';


$cfg['blowfish_secret'] = '**************';
?>

ВСЕ! после этих нехитрых манипуляций при выборе базы появляется новая вкладка "Дизайнер" - которая судя по всему написана на AJAX и дает возможно визуально видеть связи между таблицами, а также их редактировать, генерировать полный отчет о структуре выбранной базы данных в PDF формате по всем таблицам и полной диаграммой связей (после того как показал начальству - у тех глаза на лоб полезли что такое можно делать в мускуле за который никому ниче платить не надо), также можно прямо тут создавать связи между полями таблиц...


Да и много других вкусностей можно теперь делать



размещено: 2008-11-26,
последнее обновление: 2008-11-27,
автор: arksu

оценить статью:

nikll, 2008-11-27 в 11:13:09

Нифига!!! вот ты раскопал блин, я его всю жизнь в дефолте ставил и даже не подозревал о таких его фишках!
Статья ништяк!

freeman_tnu, 2008-11-27 в 13:20:31

Что-то не отображаются в дизайнере у меня связи ни в одной базе, либо у меня все базы без связей ))) Вроде все делал как и автор...

arksu, 2008-11-27 в 14:43:48

по дефолту таблицы создаются без связей)))
их можно самому добавить в дизайнере таблиц и тогда они будут отображатся

L!Ner, 2008-12-08 в 5:57:14

Да там ещё много неизвестного.. доку надо брать в руки.. себе в to-do поставлю статью дополнить..

HOSTER, 2009-01-13 в 17:22:38

гг, сколько лет юзаю даже не знал ))

alik, 2009-02-02 в 7:48:53

Реально удивлен, автор да ты волшебник!
Так глубоко залесть. Жесть!

nikll, 2009-02-06 в 4:40:29

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

arksu, 2009-02-06 в 8:17:38

имеют. как минимум пых при редактировании связанных полей подставляет сразу конечные значения (проверено), как максимум создает связи в бд мускула, за счет которых увеличивается производительность разых запросов (UNION, JOIN) (не проверял)

nikll, 2009-02-06 в 13:41:00

Ты гониш, какие связи в бд? единственная функция этой фичи это типа все нарисовать красиво.
Специально иследовал логи мускула на предмет того что phpmyadmin делает при создании связей, вот список кроме различных select'ов:

INSERT INTO pma_designer_coords (db_name, table_name, x, y, v, h) VALUES ('test', 'qwe', '685', '281', '1', '1');

DELETE FROM pma_designer_coords WHERE `db_name` = 'test' AND `table_name` = 'qwer';

INSERT INTO pma_designer_coords (db_name, table_name, x, y, v, h) VALUES ('test', 'qwer', '685', '327', '1', '1');

INSERT INTO `phpmyadmin`.`pma_relation`(master_db, master_table, master_field, foreign_db, foreign_table, foreign_field) values('test', 'qwe', 'id2', 'test', 'qwer','id');


так обьясни мне каким образом появляются мистические связи в самой бд от которых по твоим словам должна расти производительность если кроме редактированния таблиц самого phpmyadmin'a ничего не происходит?

nikll, 2009-02-06 в 13:45:46

единственное что хотябы отдаленно делает внутреннии связе это представления (view) , подробнее вот тут вот http://www.mysql.ru/docs/gruber/mg20.html

arksu, 2009-02-06 в 13:49:43

ты внимательно читал предыдущий комент?

как максимум создает связи в бд мускула, за счет которых увеличивается производительность разых запросов (UNION, JOIN) (не проверял)

ясно написал: не проверял, молодец что проверил =)
по поводу связей phpmyadmin создает для себя и рулить базой именно через phpmyadmin становица легче - т.к. подставляются конечные значения связанного столбца

akrsu, 2009-02-06 в 13:51:43

и причем здесь представления???? (views)
не понял. это совсем из другой степи и к связям в бд которые создает phpmyadmin никак не относица

gyurza2000, 2009-07-31 в 18:42:14

Делаю по статье, ввожу в браузере путь до phpmyadmin/index.php, а мне в ответ:
Wrong permissions on configuration file, should not be world writable!

Ну и какие так права должны быть?

AIR, 2009-08-13 в 0:20:20

Для установки требуэтся зависимость PDFlib-Lite-7.0.3.tar.gz , которой нигде нет !

AIR, 2009-08-13 в 0:25:42

...
решыл:  # make config
       [ ] PDF       PDFlib support (implies GD)
       # make && make install

DEM, 2011-03-04 в 11:42:13

Всё завелось с пол пинка) Едиственное что в config.inc.php пришлось добавить ещё одну строчку
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 14 чел.
За последние 30 мин было: 42 человек
За сегодня было
8482 показов,
981 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0424 секунд
Из них PHP: 28%; SQL: 72%; Число SQL-запросов: 79 шт.
Исходный размер: 160643; Сжатая: 25219