Несколько 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;
Все. Если вы все сделали верно, то все должно получиться.