Установка и использование PHPMyAdmin для веб-разработки

Что мы создаем

PHPMyAdmin (PMA) - превосходный бесплатный веб-клиент баз данных с открытым исходным кодом, который может использоваться для более активного взаимодействия с MySQL и приложениями баз данных.

Что мы создаем

Я расскажу, как его установить, обеспечить безопасность, а также опишу некоторые общие сценарии, при которых он может помочь в администрировании баз данных. Здесь для вашего ознакомления размещено онлайн демо PMA.

В дополнение к визуальному графическому интерфейсу для операций с базами данных, я также высоко ценю возможность запуска операций из командной строки SQL моего браузера. Без необходимости непосредственно заходить на сервер через SSH.

Например, некоторые Wi-Fi соединения и соединения мобильных точек доступа регулярно обрывают сеансы SSH, что делает работу с базой данных весьма проблематичной.

Установка PHPMyAdmin

Начать работу с PMA на Linux довольно просто. Я опишу, как это сделать с помощью Ubuntu 14.x на Digital Ocean. Заходим на сервер через SSH:

apt-get install phpmyadmin

Во время установки вы можете использовать настройки по умолчанию или настроить клиент по своему вкусу.
После того как вы ограничите доступ к MySQL только с одного локального хоста (своего), в MySQL больше не останется удаленных портов, которыми бы могли воспользоваться хакеры.

Они, конечно, могут попытаться прорваться через SSH или попробовать против ваших приложений атаки внедрения SQL, но непосредственно базу данных они атаковать не смогут. После установки PMA, никто не сможет осуществить веб-атаку, чтобы получить контроль над вашей базой данных, так что безопасность будет обеспечена.

Существует несколько мер предосторожности, которые я рекомендую при настройке PMA:

  • Используйте очень надежные пароли для всех ваших учетных записей MySQL, особенно для аккаунта root. Например, 25 символов для пароля root;
  • Используйте различные учетные записи и привилегии MySQL для каждого приложения / сайта, работающего на одном сервере. Таким образом, если один пароль будет взломан, под угрозой окажется база данных только одного сайта;
  • 3. Измените URL-адрес, используемый PMA по умолчанию. Таким образом, люди не смогут посещать http://адрес_вашего_сайта /phpmyadmin. Хотя это и не является сверх эффективным методом, он все равно несколько повышает безопасность.

Добавьте псевдонимы в файл apache.conf:

nano /etc/phpmyadmin/apache.conf
	Alias /myobscuredpma /usr/share/phpmyadmin

Перегрузите Apache:

service apache2 reload

Затем, чтобы получить доступ к PMA, зайдите на http://адрес_вашего_сайта/myobscuredpma.
Если вам нужно изменить ваш пароль PHPMyAdmin, вы можете отредактировать файл config-db.php здесь:

nano /etc/phpmyadmin/config-db.php
  • Настройте веб-аутентификацию для сайта PMA.

Для этого потребуется ввести дополнительный пароль, чтобы получить доступ к PMA, в дополнение к вашему паролю к базе данных, например:

Установка PHPMyAdmin

Чтобы настроить ограничения пользователей Apache, выполните следующие действия:

Установите htpasswd как часть apache2-utils:

apt-get install apache2-utils

Создайте папку для хранения паролей:

mkdir /etc/htpasswd

Добавьте поддержку htaccess для PMA:

nano /etc/phpmyadmin/apache.conf

Добавьте AllowOverride All:

<Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        AllowOverride All

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

nano /usr/share/phpmyadmin/.htaccess
	AuthType Basic
AuthName "Login Required for Access"
AuthUserFile /etc/htpasswd/.htpasswd
Require valid-user

Установите ваш пароль:

htpasswd -c /etc/htpasswd/.htpasswd username

И перезапустите Apache:

service apache2 restart

Зайдите через браузер на ваш PMA-сайт, и вам будет предложено ввести имя пользователя и пароль, как показано выше.

Использование PHPMyAdmin в веб-разработке

1. Создание и удаление баз данных

Я считаю, PMA особенно полезен на стадии разработки и тестирования, где, возможно, вам неоднократно потребуется сбросить базу данных или восстановить ее из резервной копии.

Без PMA, мне нужно было бы заходить на свой сервер через SSH. Затем заходить в MySQL, а затем запускать:

create database myapp;
 grant all privileges on myapp_database.* TO "your-mysql-username"@"localhost" identified by "your-mysql-password";
 flush privileges;

С PMA вы можете запустить любой запрос командной строки через визуальный интерфейс. Перейдите на вкладку SQL и вставьте инструкции для базы данных MySQL. После этого нажмите кнопку Go для создания базы данных:

Использование PHPMyAdmin в веб-разработке

Или, вы можете использовать визуальный интерфейс напрямую:

Использование PHPMyAdmin в веб-разработке - 2

Вы также можете добавить пользователей и определить для них привилегии. Перейдите на вкладку привилегий:

Нажмите кнопку добавления пользователя и определите ему привилегии для нужной базы данных:

Для вашего основного аккаунта приложений баз данных, вам нужно будет проверять панели разделов «Данные» и «Структура».

Чтобы удалить базу данных, воспользуйтесь меню «Базы данных». Выберите базу данных, которую вы хотите удалить, и нажмите «Удалить»:

2. Резервное копирование базы данных

Перед выполнением любых операций по расширению базы данных или обновлению кода, всегда следует сохранять базу данных приложения. Если что-то пойдет не так, вы всегда сможете восстановить свой сайт из резервной копии.

С помощью веб-интерфейса PMA, выберите базу данных, выберите вкладку Export и выберите пункт Custom:

Включите оператор "Add Drop Table / View / Procedure / Function / Event":

При нажатии Go PMA загрузит резервную копию всей вашей базы данных. Если параметры задержки Apache PHP настроены неправильно, загрузка некоторых больших файлов может зависнуть и оборваться. Вы можете настроить это в PHP.ini, как я описал на своем сайте.

3. Тестирование запросов

PMA очень здорово помогает во время разработки при тестировании запросов SQL. Когда я работал над Geogram мне нужно было изучить и проверить ряд сложных запросов геолокации по расположенным поблизости объектам, например, найти объекты поблизости от моего адреса. С PMA это было сделать намного проще.

Выберите базу данных, нажмите Query. Вставьте или отредактируйте сложные запросы и проверьте их непосредственно из PMA:

После того, как я установил, что мои запросы работают, я очень легко смог написать программный код ActiveRecord. В качестве примера:

$criteria = new CDbCriteria;
$criteria->together=true;
$criteria->having= "distance < 100";
$criteria->order = "distance ASC";
$criteria->with = array('place_geometry'=>array('select'=>'place_id,center,'.new CDbExpression('(3959 * acos( cos( radians('.$lat.') ) * cos( radians( X(center) ) ) * cos( radians( Y(center) ) - radians('.$lon.') ) + sin( radians('.$lat.') ) * sin( radians( X(center) ) ) )) as distance'))); 
$dataProvider = new CActiveDataProvider(Place::model()->active()->includesMember($id), 
                        array('criteria' => $criteria,
                        'pagination' => array(
                            'pageSize' => 10,
                        ),
                    ));

4. Редактирование записей БД

Если вы разработчик, вы, вероятно, сталкивались с ситуацией, когда в результате ошибки приложения ваша база данных была повреждена. Я ведь прав?

Например, некоторые из моих приложений управления электронной почтой иногда дают сбой при обработке необычных сообщений; эти ошибки трудно обнаружить при обычном тестировании.

Когда это произошло, я счел полезным изменить базу данных непосредственно через PMA, отсоединить задачи и снова запустить сайт. В некоторых случаях возможность просто просматривать таблицы может помочь вам при диагностике неполадок.

В PMA откройте базу данных и выберите таблицу. Дважды щелкните на столбце, который вы хотите отредактировать. Внесите нужные изменения и вернитесь обратно:

5. Сброс настроек базы данных для миграции

Если вы используете фреймворк (например, Yii), вы можете использовать программную миграцию базы данных. Миграции баз данных облегчают изменение функционала разработки и обновление приложений. В то же время их тестирование может сломать элементы вашей локальной базы данных.

Очень часто я сталкиваюсь с ошибками миграции и не могу произвести миграцию из-за непереносимых индексов, внешних ключей или таблиц. В этом случае, я могу использовать PMA, удалить таблицу и ненужные файлы индекса.

В PMA, выберите вашу базу данных, перейдите на вкладку SQL и введите SQL для удаления внешних ключей или индексов. Вот несколько примеров:

Я надеюсь, что вы нашли эту стать полезной для себя. Пожалуйста, напишите о любых замечаниях, дополнениях или ваших идеях в комментариях.

РедакцияПеревод статьи «Installing and Using PHPMyAdmin for Web Development»