21 марта 2014

Установка и настройка phpMyAdmin на FreeBSD 9.1

Для удобства управления базой MySQL , в этой статье мы установим phpMyAdmin и произведём его первоначальную настройку. Хотя, по сути, для его работы достаточно просто скачать phpMyAdmin с официального сайта, забросить на наш веб сервер и работать. Но мы хотим обновлять phpMyAdmin и нужные для его работы библиотеки через систему портов, поэтому и установим оттуда же. Не зря ведь он там есть?

Приступим!
# cd /usr/ports/databases/phpmyadmin/
# make install clean

Прошу обратить внимание! Если в нашей системе установлен PHP версии 5.5, то в конфигурации установки phpMyAdmin следует отключить установку APC который не поддерживает эту редакцию PHP, и ваша установка завершится ошибкой:
===> pecl-APC-3.1.14_1 cannot be installed: doesn’t work with lang/php55 poer (doesn’t support PHP 5.5)

У меня установлен PHP версии 5.3, поэтому я оставил. И моя установка завершилась сообщением, в котором ясно описано, что мне следует сделать дальше.
To make phpMyAdmin available through your web site, I suggest
that you add something like the following to httpd.conf:

For Apache versions earlier than 2.4:

    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"

    <Directory "/usr/local/www/phpMyAdmin/">
        Options none
        AllowOverride Limit

        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1 .example.com
    </Directory>

For Apache version 2.4.x or above:

    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"

    <Directory "/usr/local/www/phpMyAdmin/">
        Options None
        AllowOverride Limit

        Require local
        Require host .example.com
    </Directory>

Идём в конфигурационный файл Apache (в моем случае это версия 2.4, если у вас другая, то и путь и то, что вы будете в этот файл писать, будет выглядеть иначе. Как? Смотреть выше)
# ee /usr/local/etc/apache24/httpd.conf

И дописываем алиас для нашего phpMyAdmin
Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"

    <Directory "/usr/local/www/phpMyAdmin/">
        Options None
        AllowOverride Limit

        Require all granted
    </Directory>

Перезапускаем Apache
# /usr/local/etc/rc.d/apache24 restart

И идем смотреть на наш phpMyAdmin по адресу http://IP_нашего_сервера/phpmyadmin/ Выглядит это вот так:


Если мы не устанавливали пароль для root, то следует его установить, иначе phpMyAdmin с пустым паролем нас не пустит.
Устанавливаем пароль для root
# mysqladmin -u root password '12345'

Теперь разберёмся с жалобами нашего phpMyAdmin, хотя всё что не помечено красным, можно смело игнорировать, и то...

Перейдем в каталог установки
# cd /usr/local/www/phpMyAdmin/

И согласно документации создадим там каталог для конфигурации и дадим ему соответствующие права
# mkdir config    
# chown :www config                  
# chmod g+rw config

Скопируем в эту папку конфигурационный файл и дадим ему права на запись
# cp config.inc.php config/ 
# chmod g+rw config/config.inc.php

Перейдем на страницу настройки http://IP_нашего_сервера/phpmyadmin/setup/
И создадим новый сервер.  Пожалуй из основных настроек стоит ввести только имя сервера.


Не забывая при этом нажать «Apply» и «Сохранить»
Теперь наш phpMyAdmin говорит нам, что нужно удалить каталог настройки. Что мы и сделаем, заменив оригинальный файл настройки на созданный нами конфигурационный файл, убрав данные ему права на запись.

# mv config/config.inc.php .
#chmod g-w config.inc.php
# rm -rf config 

Мой конфигурационный файл после внесенных изменений стал выглядеть следующим образом:
<?php
/*
 * Generated configuration file
 * Generated by: phpMyAdmin 4.1.9 setup script
 * Date: Tue, 18 Mar 2014 15:18:15 +0200
 */

/* Servers configuration */
$i = 0;

/* Server: myhost.my.domain [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'myhost.my.domain';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = 3306;
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

/* End of servers configuration */

$cfg['blowfish_secret'] = '53284790acbbf8.84067969';
$cfg['DefaultLang'] = 'en';
$cfg['ServerDefault'] = 1;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>

Теперь осталось настроить дополнительные возможности phpMyAdmin (если, конечно, они вам нужны). Для этого нужно создать соответствующую базу с таблицами и пользователя для них.
База создается скриптом create_tables.sql, который лежит в /usr/local/www/phpMyAdmin/examples/ (для версии 4.1.9 точно там)

Подключаемся к MySQL
# mysql –u rootp

Вводим пароль и выполняем скрипт
mysql> source /usr/local/www/phpMyAdmin/examples/create_tables.sql

Если всё прошло успешно, нам должно вернуть что-то вроде такого:
Query OK, 0 rows affected (0.01 sec)

Выходим из MySQL
mysql> quit

Теперь идём в наш phpMyAdmin, и создаем пользователя pma с полным доступом к созданной скриптом базе phpmyadmin, не забывая дать ему GRANT на администрирование базы, и указать хост localhost.
Теперь нужно прописать созданные таблицы в нашем файле конфигурации.
Если вы подключены по SSH к вашему серверу, то думаю что учить вас пользоваться Ctrl+С, Shift+Insert не нужно :) В противном случае можно поступить вот как.
Скопируем файл пример, и отредактируем в нём нужные нам строки
# cp config.sample.inc.php pmaconfigee
# ee pmaconfig

Избавимся от ненужных строк, и раскомментируем необходимые нам переменные. Из значений, кроме пароля к юзеру pma в принципе трогать ничего не будем. В итоге у нас должно выйти вот как.
<?php
/*
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '12345';

/* Storage database and tables */
$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]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';

/*
 * End of servers configuration
 */
?>

Сохраним этот файл и просто допишем его содержимое в наш основной конфигурационный файл. И потом удалим нашу заготовку.
# catcat pmaconfig >> config.inc.php
# rm pmaconfig

После этого перезаходим в phpMyAdmin и проверяем что нет больше никаких сообщений, что у нас что-то не настроено.
На этом всё. Пользуемся!