PHPMyAdmin (PMA) — это отличный бесплатный веб-клиент базы данных с открытым исходным кодом, который можно использовать для более простого взаимодействия с базами данных MySQL и приложениями. Я опишу, как установить его, защитить его и некоторые распространенные сценарии, с помощью которых он может помочь вам в администрировании базы данных. Вот онлайн демо PMA для вас, чтобы исследовать.
В дополнение к предложению визуального графического интерфейса для операций с базами данных, я также ценю возможность выполнения операций SQL командной строки через мой браузер без необходимости входа на сервер через SSH. Например, некоторые Wi-Fi-соединения и мобильные точки доступа регулярно завершают постоянные сеансы SSH, что затрудняет задачи с базой данных.
Установка PHPMyAdmin
Начать работу с 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, выполните следующие действия:
Установите 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, и вам будет предложено ввести имя пользователя и пароль, как показано выше.
Использование PHPMyAdmin во время веб-разработки
1. Создание и удаление баз данных
Я считаю 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, чтобы создать базу данных.
Или вы можете использовать визуальный интерфейс напрямую:
Вы также можете добавлять пользователей и определять привилегии таким образом. Нажмите на вкладку привилегий:
Нажмите Добавить пользователя и определите привилегии для базы данных, которую вы хотите:
Для вашей типичной учетной записи базы данных приложения вы захотите установить флажки в квадратах «Данные и структура».
Чтобы удалить базу данных, посетите меню «Базы данных». Щелкните по базе данных, которую вы хотите удалить, и нажмите Удалить:
2. Резервное копирование вашей базы данных
Это хорошая идея сделать резервную копию базы данных приложения перед выполнением каких-либо расширенных операций с базой данных или обновлением кода. Если что-то пойдет не так, вы сможете восстановить свой сайт из резервной копии.
Используя веб-интерфейс PMA, щелкните базу данных, перейдите на вкладку «Экспорт» и выберите «Пользовательский».
Включить оператор «Добавить удаленную таблицу / Просмотр / Процедуру / Функцию / Событие»:
Когда вы нажимаете Go, PMA загрузит резервную копию всей вашей базы данных. Если вы не настроили параметры тайм-аута Apache PHP, некоторые длительные загрузки файлов могут прерваться и завершиться неудачно. Вы можете настроить это в PHP.ini
как я описал на моем сайте .
3. Тестирование запросов
PMA отлично подходит для тестирования ваших SQL-запросов во время разработки. Когда я создал Geogram (см. Также мой следующий учебник MapApp по Tuts + ), мне нужно было изучить и протестировать ряд сложных геолокационных запросов для шейп-файлов окрестностей, например, найти ближайшие окрестности к моему адресу. PMA сделал это намного проще.
Выберите вашу базу данных, нажмите на Query. Вставьте или отредактируйте свои сложные запросы и протестируйте их непосредственно из PMA:
После того, как мои запросы заработали, я мог бы легче писать программный код 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,
),
));
|
4. Восстановление записей в базе данных
Если вы разработчик, скорее всего, в приложении произошла ошибка, которая повредила вашу базу данных. Я точно знаю?
Например, некоторые из моих приложений для управления электронной почтой иногда застревают при поступлении необычных сообщений; эти ошибки трудно найти в обычном тестировании. Когда это происходит, я считаю полезным изменить базу данных напрямую с помощью PMA, чтобы открепить мои задачи и снова запустить сайт. В некоторых случаях простота просмотра таблиц может помочь вам диагностировать неисправности.
В PMA откройте базу данных и выберите свою таблицу. Дважды щелкните столбец, чтобы напрямую отредактировать его на месте. Сделайте нужное вам изменение и нажмите return:
5. Сброс базы данных для миграции
Если вы используете инфраструктуру (например, Yii ), вы можете использовать программные миграции баз данных. Миграции баз данных упрощают итерацию разработки функций и обновление ваших приложений. Однако их тестирование может привести к поломке вашей локальной базы данных.
Чаще всего я сталкиваюсь с ошибками миграции и не могу мигрировать вверх или вниз из-за невыпущенных индексов, внешних ключей или таблиц. В этом случае я могу использовать PMA, чтобы удалить таблицу и удалить ненужные файлы индекса.
В PMA выберите базу данных, перейдите на вкладку SQL и введите SQL для удаления внешнего ключа или индекса. Вот пара примеров:
Я надеюсь, что вы нашли это полезным. Пожалуйста, оставьте любые комментарии, исправления или дополнительные идеи ниже. Вы можете просмотреть мои другие учебники Tuts + на моей странице автора или подписаться на меня в Twitter @reifman .