Статьи

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

Конечный продукт
Что вы будете создавать

PHPMyAdmin (PMA) — это отличный бесплатный веб-клиент базы данных с открытым исходным кодом, который можно использовать для более простого взаимодействия с базами данных MySQL и приложениями. Я опишу, как установить его, защитить его и некоторые распространенные сценарии, с помощью которых он может помочь вам в администрировании базы данных. Вот онлайн демо PMA для вас, чтобы исследовать.

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

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

1
apt-get install phpmyadmin

Вы можете использовать настройки по умолчанию во время установки или настроить их по своему вкусу.

Как только вы ограничите доступ MySQL только к локальному хосту (что вам и нужно), у MySQL не будет удаленных портов для доступа хакера. Они могут попытаться взломать через SSH или попробовать атаки SQL-инъекций на ваши приложения, но они не могут напрямую атаковать базу данных. После того, как вы установите PMA, любой может провести сетевые атаки на него, чтобы получить контроль над вашей базой данных, поэтому требуется осторожность.

Есть несколько мер предосторожности, которые я рекомендую при настройке PMA.

1. Используйте очень надежные пароли для всех ваших учетных записей MySQL, особенно для учетной записи root. например, 25 символов для пароля root.

2. Используйте разные учетные записи и привилегии MySQL для каждого приложения / сайта, работающего на одном сервере. Таким образом, если один пароль скомпрометирован, скомпрометирована только одна база данных сайта.

3. Измените URL по умолчанию, используемый PMA. Таким образом, люди не могут посетить http://yourblog.com/phpmyadmin . Хотя эта защита от неясности не очень эффективная техника, она добавляет некоторую защиту.

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

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

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

1
service apache2 reload

Затем, чтобы получить доступ к PMA, посетите http://yourblog.com/myobscuredpma

Если вам нужно изменить пароль PHPMyAdmin, вы можете отредактировать config-db.php здесь:

nano /etc/phpmyadmin/config-db.php

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

Ограничения доступа пользователей Apache

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

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

1
apt-get install apache2-utils

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

1
mkdir /etc/htpasswd

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

nano /etc/phpmyadmin/apache.conf

Добавить AllowOverride All ниже

1
2
3
4
<Directory /usr/share/phpmyadmin>
       Options FollowSymLinks
       DirectoryIndex index.php
       AllowOverride All

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

nano /usr/share/phpmyadmin/.htaccess

1
2
3
4
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, и вам будет предложено ввести имя пользователя и пароль, как показано выше.

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

Без PMA я бы входил на свой сервер через SSH. Войдите в MySQL и запустите:

1
2
3
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

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

Используя веб-интерфейс PMA, щелкните базу данных, перейдите на вкладку «Экспорт» и выберите «Пользовательский».

Экспортируйте свою базу данных

Включить оператор «Добавить удаленную таблицу / Просмотр / Процедуру / Функцию / Событие»:

Добавить команды удаления таблицы

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

PMA отлично подходит для тестирования ваших SQL-запросов во время разработки. Когда я создал Geogram (см. Также мой следующий учебник MapApp по Tuts + ), мне нужно было изучить и протестировать ряд сложных геолокационных запросов для шейп-файлов окрестностей, например, найти ближайшие окрестности к моему адресу. PMA сделал это намного проще.

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

Тестирование сложных запросов с помощью ручного SQL

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

01
02
03
04
05
06
07
08
09
10
11
$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,
                        ),
                    ));

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

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

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

Редактировать данные непосредственно в базе данных

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

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

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

Удалите внешний ключ и индекс

Я надеюсь, что вы нашли это полезным. Пожалуйста, оставьте любые комментарии, исправления или дополнительные идеи ниже. Вы можете просмотреть мои другие учебники Tuts + на моей странице автора или подписаться на меня в Twitter @reifman .