Несколько MySQL под управлением одного phpMyAdmin

Что-то за сегодня меня прям прорвало.. Может опять начну следить за блогом?)) Что’ж, «продолжим окатывать всяким контентом наши интернеты».

Как то раз, сидя на работе, мне потребовалось попасть на сервер MySQL одной из виртуалок. Потребовалось это сделать быстро и безболезненно, так как там что-то отлюбилось… Не долго думая я скачал туда дистрибутив pma, залил его в папку www и вместо экрана приветствия получил щедрое предложение скачать index.php. Немного офигев я понял что там не стоит php, а ставить его туда было не вариант, так как доступа к инеты из виртуалки у меня не было.  Не долго думая я понял, что у меня есть еще один pma только на другой виртуалке, и я начал гуглить решение… В итоге я «познал», что начиная с версии 1.4.2, phpMyAdmin поддерживает администрирование нескольких MySQL серверов.   По хорошему этот пост можно было назвать, как «MULTIPMA», но да не все поймут, не все оценят…

Ниже будет описан пример установки и настройки PHPMyAdmin на Debian сервере.

Готовимся

Если что, у нас уже стоит Apache, PHP, MySQL.
IP Server2, (тут мы будем ставить PMA) пусть будет 10.20.20.200.
IP Server1 (там где первый mysql сервер) — 10.20.20.100
IP Server3 (там где еще один mysql сервер) — 10.20.20.300

Первое что нужно сделать это позволить MySql серверу получать запросы от другого IP. По у молчанию в файле конфигурации my.conf есть параметры «skip-networking»  и «bind-address». Ну так вот, писать там два подряд параметра «bind-address» с разными ip там не нужно, как и вписывать их через запятую. Правильно будет закомментировать эти параметры, и чтобы MySQL не светил голым задом во весь интернет, заблокировать всем доступ с помощью firewall.

#bind-address=127.0.0.1
#bind-address=localhost

Второе, нужно учесть, что необходимо настроить доступ с ip пользователям MySQL. По умолчанию они имеют доступ только с localhost, а это значит что вы не получите доступ к БД из вне. Например, если нам нужен доступ для root пользователя, правильнее всего будет добавить его еще раз, с тем же самым паролем, но в хосте указать IP с которого мы будем ломиться.

mysql> CREATE USER 'root'@'10.20.20.200' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO root@'10.20.20.200';

Третье, чтобы не светить IP адреса (тем более, если они внешние) в поле выбора сервера, правильно будет добавить следующие строки в файлик /etc/hosts:

127.0.0.1 localhost
127.0.1.1 server2
server1.local 10.20.20.100
server3.local 10.20.20.300

Ставим

Установка phpMyAdmin дело не сложное, достаточно просто воспользоваться следующей командой.

apt-get install phpmyadmin

Настраиваем

На всякий случай сделаем резервную копию файла конфигурации PMA:

cp /etc/phpmyadmin/config.inc.php /etc/phpmyadmin/config.inc.php.bak

Далее открываем его, и ищем переменную «$cfg[‘Servers’][$i][‘AllowNoPassword’]». Ее нужно раскомментировать:

$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

В этом же файле ищем следующие строки:

//$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
//$cfg['Servers'][$i]['host'] = 'localhost';
//$cfg['Servers'][$i]['connect_type'] = 'tcp';
//$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
//$cfg['Servers'][$i]['extension'] = 'mysql';

И приводим их к такому виду:

/*server1.local*/
/* Тип аутентификации * /
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Параметры сервера */
$cfg['Servers'][$i]['host'] = 'server1.local';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
/* server3.local */
$i++;
/* Тип аутентификации * /
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Параметры сервера*/
$cfg['Servers'][$i]['host'] = 'server3.local';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['AllowNoPassword'] = false;

Все. Если вы все сделали верно, то все должно получиться.

Источники: