PhpMyAdmin — мощный и удобный инструмент для оправления базами данных MySQL и MariaDB. Так же работает с Percona. Поддерживает огромный перечень операций и работает без дополнительных настроек практически в любом современном дистрибутиве Linux.
Однако по умолчанию phpMyAdmin настроен на работу с localhost, то есть с сервером баз данных, расположенном на локальной машине. Процедура «переподключения» phpMyAdmin на работу с внешним сервером достаточно проста, но вызывает вопросы у тех, кто занимается всем этим недавно или неглубоко.
В данной статье мы рассмотрим несколько вариантов подключения phpMyAdmin ко внешнему серверу, так как задачи и условия у всех разные. В примере я использую сервер баз данных MariaDB, ОС Ubuntu и phpMyAdmin версии 4.5.4, что практически не важно, так как всё достаточно просто. PhpMyAdmin установлен на домашний ПК, но с тем же успехом он может быть настроен и на удалённом сервере. Имеется ввиду, что всё прикладное ПО, такое как непосредственно сам сервер БД, http-сервер и php у вас уже установлено.
Пример первый (доступ с паролем).
Сервер баз данных расположен на машине с адресом 10.10.1.10. PhpMyAdmin устанавливаем на локальный ПК с адресом 10.10.1.20. Необходимо убедиться, что сервер баз данных принимает внешние соединения. Правим my.cnf (/etc/mysql/my.cnf). В строке bind-address по умолчанию указан адрес 127.0.0.1, что запрещает серверу принимать внешние соединения. Заменяем его на 0.0.0.0, что разрешит внешние соединения с любого адреса. В целях безопасности лучше уточнить адрес, если вы не планируете подключаться к серверу из разных источников. В этом примере будет использоваться строка следующего вида:
Сохраняем и перезагружаем.
На ПК (или другой удалённый сервер) устанавливаем phpMyAdmin.
В процессе установки отказываемся от конфигурации (конфигурировать нечего; сервер баз данных на удалённой машине).
Далее правим конфигурационный файл phpMyAdmin config.inc.php (/etc/phpmyadmin/config.inc.php). Если это была свежая установка и на локальном хосте нет сервера баз данных, то удаляем все строки (кроме первой «<?php») и пишем следующее:
Вместо Server Name вписываем что угодно. Сохраняем и закрываем файл.
Открываем в браузере адрес http://localhost/phpmyadmin/ и далее всё в штатном режиме. Если у вас подключено несколько серверов, то их можно выбрать во вкладке, под полями логина и пароля.
Пример второй (без пароля).
Ввод имя пользователя базы данных и пароля — занятие муторное, если phpMyAdmin расположен не на публичном сервера, а дома на ПК, к которому кроме вас никто не подходит. Поэтому можно упростить процесс входа, указав в конфигурационном файле пользователя базы и его пароль.
На стороне сервера входим в консоль сервера БД
Создаём пользователя (условно «username»)
«%» - говорит о том, что пользователь сможет войти с любого хоста. Если в этом нет необходимости, то укажите IP хоста. В данном примере это 10.10.1.20. «password» - пароль пользователя.
Создаём новую базу данных (условно «newdatabase»)
Даём пользователю username все права на управление базой newdatabase
По поводу «%» смотрите выше.
Таким образом мы создали базу данных «newdatabase», пользователя для неё «username» с паролем «password» и дали ему права на управление этой базой.
В config.inc.php (/etc/phpmyadmin/config.inc.php) вписываем следующее:
При входе в phpMyAdmin мы увидим вкладку с сервером (или серверами), но выбрав нужный, поля логина и пароля нужно оставить пустыми.
Таким образом серверов баз (пример первый) и самих баз (пример второй) можно подключить сколько угодно.
Пример третий (без пароля с админскими привилегиями).
Чтобы ещё больше облегчить задачу себе и злоумышленнику, (в случае если вы не очень хорошо понимаете, что делаете) можно создать пользователя с админскими привилегиями. Подходит как для первого примера, так и для второго. Некоторые админы используют учётную запись root для входа в phpMyAdmin. Если у вас много баз данных, сие избавляет от необходимости держать под рукой список с паролями от десятков баз и ввода всего этого при переключении между базами.
Если phpMyAdmin у вас на реально персональном компьютере дома, порт 3306 закрыт от посторонних и так далее, то всё это не опаснее, чем конфигурационные скрипты подавляющего числа CMS, где данные доступа к БД записаны открытым текстом.
И так, создаём пользователя и даём ему права, идентичные правам root.
Мы создали пользователя «superuser» с паролем «strongpassword», который может соединяться с сервером БД с IP адреса 10.10.1.20.
Все три метода упрощают жизнь, в той или иной степени, но так же могут стать причиной острого геморроя, так как даже самый сильный пароль, на ряду со всеми прочими манипуляциями, передаётся на сервер через вашего провайдера в незашифрованном виде. Если вы не уверены в защищённости своего канала, то лучше установить phpMyAdmin на той же машине, где уже установлен сервер баз данных, ограничить к нему доступ любым удобном для вас способом и не использовать http протокол для доступа к нему.
Однако по умолчанию phpMyAdmin настроен на работу с localhost, то есть с сервером баз данных, расположенном на локальной машине. Процедура «переподключения» phpMyAdmin на работу с внешним сервером достаточно проста, но вызывает вопросы у тех, кто занимается всем этим недавно или неглубоко.
В данной статье мы рассмотрим несколько вариантов подключения phpMyAdmin ко внешнему серверу, так как задачи и условия у всех разные. В примере я использую сервер баз данных MariaDB, ОС Ubuntu и phpMyAdmin версии 4.5.4, что практически не важно, так как всё достаточно просто. PhpMyAdmin установлен на домашний ПК, но с тем же успехом он может быть настроен и на удалённом сервере. Имеется ввиду, что всё прикладное ПО, такое как непосредственно сам сервер БД, http-сервер и php у вас уже установлено.
Пример первый (доступ с паролем).
Сервер баз данных расположен на машине с адресом 10.10.1.10. PhpMyAdmin устанавливаем на локальный ПК с адресом 10.10.1.20. Необходимо убедиться, что сервер баз данных принимает внешние соединения. Правим my.cnf (/etc/mysql/my.cnf). В строке bind-address по умолчанию указан адрес 127.0.0.1, что запрещает серверу принимать внешние соединения. Заменяем его на 0.0.0.0, что разрешит внешние соединения с любого адреса. В целях безопасности лучше уточнить адрес, если вы не планируете подключаться к серверу из разных источников. В этом примере будет использоваться строка следующего вида:
bind-address = 10.10.1.20
Сохраняем и перезагружаем.
sudo service mysql restart
На ПК (или другой удалённый сервер) устанавливаем phpMyAdmin.
sudo apt install phpmyadmin
В процессе установки отказываемся от конфигурации (конфигурировать нечего; сервер баз данных на удалённой машине).
Далее правим конфигурационный файл phpMyAdmin config.inc.php (/etc/phpmyadmin/config.inc.php). Если это была свежая установка и на локальном хосте нет сервера баз данных, то удаляем все строки (кроме первой «<?php») и пишем следующее:
/* External Server #1 */
$i++;
$cfg['Servers'][$i]['verbose'] = 'Server Name';
$cfg['Servers'][$i]['host'] = '10.10.1.10';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
Вместо Server Name вписываем что угодно. Сохраняем и закрываем файл.
Открываем в браузере адрес http://localhost/phpmyadmin/ и далее всё в штатном режиме. Если у вас подключено несколько серверов, то их можно выбрать во вкладке, под полями логина и пароля.
Пример второй (без пароля).
Ввод имя пользователя базы данных и пароля — занятие муторное, если phpMyAdmin расположен не на публичном сервера, а дома на ПК, к которому кроме вас никто не подходит. Поэтому можно упростить процесс входа, указав в конфигурационном файле пользователя базы и его пароль.
На стороне сервера входим в консоль сервера БД
mysql -u root -p
Создаём пользователя (условно «username»)
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
«%» - говорит о том, что пользователь сможет войти с любого хоста. Если в этом нет необходимости, то укажите IP хоста. В данном примере это 10.10.1.20. «password» - пароль пользователя.
Создаём новую базу данных (условно «newdatabase»)
CREATE DATABASE newdatabase;
Даём пользователю username все права на управление базой newdatabase
grant CREATE,INSERT,DELETE,UPDATE,SELECT on newdatabase.* to 'username'@'%';
По поводу «%» смотрите выше.
Таким образом мы создали базу данных «newdatabase», пользователя для неё «username» с паролем «password» и дали ему права на управление этой базой.
В config.inc.php (/etc/phpmyadmin/config.inc.php) вписываем следующее:
/* newdatabase */
$i++;
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['host'] = '10.10.1.10';
$cfg['Servers'][$i]['verbose'] = 'Server Name';
$cfg['Servers'][$i]['user'] = 'username';
$cfg['Servers'][$i]['password'] = 'password';
$cfg['Servers'][$i]['hide_db'] = '^(mysql performance_schema|innodb|information_schema)$';
При входе в phpMyAdmin мы увидим вкладку с сервером (или серверами), но выбрав нужный, поля логина и пароля нужно оставить пустыми.
Таким образом серверов баз (пример первый) и самих баз (пример второй) можно подключить сколько угодно.
Пример третий (без пароля с админскими привилегиями).
Чтобы ещё больше облегчить задачу себе и злоумышленнику, (в случае если вы не очень хорошо понимаете, что делаете) можно создать пользователя с админскими привилегиями. Подходит как для первого примера, так и для второго. Некоторые админы используют учётную запись root для входа в phpMyAdmin. Если у вас много баз данных, сие избавляет от необходимости держать под рукой список с паролями от десятков баз и ввода всего этого при переключении между базами.
Если phpMyAdmin у вас на реально персональном компьютере дома, порт 3306 закрыт от посторонних и так далее, то всё это не опаснее, чем конфигурационные скрипты подавляющего числа CMS, где данные доступа к БД записаны открытым текстом.
И так, создаём пользователя и даём ему права, идентичные правам root.
CREATE USER 'superuser'@'10.10.1.20' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON *.* TO 'superuser'@'10.10.1.20' WITH GRANT OPTION;
Мы создали пользователя «superuser» с паролем «strongpassword», который может соединяться с сервером БД с IP адреса 10.10.1.20.
Все три метода упрощают жизнь, в той или иной степени, но так же могут стать причиной острого геморроя, так как даже самый сильный пароль, на ряду со всеми прочими манипуляциями, передаётся на сервер через вашего провайдера в незашифрованном виде. Если вы не уверены в защищённости своего канала, то лучше установить phpMyAdmin на той же машине, где уже установлен сервер баз данных, ограничить к нему доступ любым удобном для вас способом и не использовать http протокол для доступа к нему.
___
Tatyana K.
Tatyana K.