Содержание статьи
Когда мы говорим об инструменте для управления базой данных MySQL, то априори
считаем, что это будет phpMyAdmin. На любом хостинге phpMyAdmin - стандарт
де-факто. Плохо одно – этот скорее вспомогательный инструмент зачастую
используется в качестве основного инструмента. Но когда постоянно имеешь дело с
базой данных, то и инструмент нужно выбирать подобающий.
Нет, против phpMyAdmin я ничего не имею, но давай посудим трезво. Реализация
на PHP позволяет использовать решение практически где угодно, но сразу
накладывает серьезные ограничения по удобству использования. Чего стоят
полностью перезагружаемые страницы в виду отсутствия AJAX’а. Работа через такой
интерфейс дается туго, а редактирование данных вообще сводит с ума. Ты никогда
случайно не нажимал кнопку "Удалить страницу", хотя хотел удалить одну лишь
запись? Я – нажимал. Помимо этого, phpMyAdmin приходится настраивать для каждого
сервера в отдельности. О доступе к разным серверам из одного места остается
только мечтать. Да, реализация в виде веб-приложения дает плюсы в некоторых
ситуациях, но для проектирования баз, редактирования данных, программирования
хранимых процедур и сложных SQL запросов есть куда более удачные решения.
HeidiSQL
В отличие от phpMyAdmin, HeidiSQL
уже не является веб-приложением. Это виндовая программа с продуманным
интерфейсом, благодаря которому работа с базами превращается в одно
удовольствием. Преимущества десктопной программы на лицо. Просмотр и
редактирование данных осуществляется через удобнейший grid (таблица с
возможностью редактирования). Сравни это с phpMyAdmin, где в таблицах лишь
отображаются данные, а изменение любой из записей осуществляется на отдельной
странице. HeidiSQL позволяет отсортировать данные и, что особенно удобно,
использовать фильтры, отбирая записи по определенной маске. Для большей
наглядности к таблице можно применить различные цветовые схемы - фича из разряда
тех, что сначала кажутся незначительной мелочью, но через некоторое время так к
ней привыкаешь, что уже не можешь отказаться.
Впрочем, едва ли работа с базой ограничиться лишь редактированием таблиц.
Одна из ключевых особенностей программы - редактор SQL-запросов. Как и в
современных средах разработки, в распоряжении пользователя модные навороты по
редактированию кода: автодополнение названий баз данных и таблиц, а также
подсказки с конструкциями запроса. Теперь вообще можно не напрягаться по поводу
названия таблиц и полей - HeidiSQL сама подскажет нужные варианты. Более
того, пользователю предоставляется система шаблонных заготовок кода (так
называемых сниппетов), за счет которых возможно не только упростить, но еще и
ускорить разработку. Единственный косяк - отсутствие закладок для разных
запросов. Без этой жизненно важной детали интерфейса будет ой как сложно, если
одновременно приходится выполнять несколько разных запросов. Зато дико порадовал
редактор хранимых процедур, крайне дружелюбный к пользователю и упрощающий
процесс создания функций и триггеров
Вообще с HeidiSQL любые действия с базами данных становятся на порядок
приятнее. Нет ничего проще, чем, например, сделать дамп базы с ее структурой и
данными: HeidiSQL быстро сгенерирует любой SQL-экспорт. Через удобный
интерфейс можно сдампить структуру базы и сами данные в файл или же вообще на
другой сервер. Но перед тем как в тупую переносить дамп, подумай: если на обоих
серверах есть одинаковые базы, то возможно уместнее воспользоваться встроенной
функцией по синхронизации. А если данные нужно перенести в другой формат, то тут
грех не воспользоваться экспортом в CSV, HTML и XML форматы.
Теперь что касается администрирования. HeidiSQL позволяет мониторить и
удалять клиентские процессы. Это отличная возможность проанализировать
выполнения запросов и удалить левые процессы. Помимо этого ты можешь удобно
редактировать переменные сервера, а также управлять привилегиями пользователей с
помощью интерфейса, подобного для редактирования ACL-листа для файлов NTFS.
К сожалению, все преимущества и прелести программы летят в тартарары, если на
сервере заблокирован порт MySQL демона. HeidiSQL банально не сможет
подключиться к серверу и будет абсолютно бесполезным. Еще более грустно от того,
что на дешевых хостингах такая ситуация в порядке в вещей, а механизмов для
обхода этого ограничения у программы нет.
SQLyog
Так что же делать? Если хостер блокирует файрволом порты, которые относятся к
MySQL-серверу, то соединиться с базой могут исключительно локальные программы и
скрипты. Зачастую с их помощью и приходится осуществлять управление (черт, опять
phpMyAdmin!), но есть другой вариант - заюзать их в качестве посредника! Если
залить на сервер специальный скрипт, который будет иметь доступ к MySQL и
одновременно доступен "снаружи", то его вполне можно использовать как связующее
звено между СУБД и нашей графической оболочкой. Такой прием называется
HTTP-туннелингом и поддерживается замечательной утилитой для работы с базами
MySQL - SQLyog.
Указываем в настройках соединение адрес скрипта SQLyongTunnel.php,
предварительно размещенного на хостинге, - и файрвол остается не удел. Требуется
безопасность? SQLyog поддерживает подключение по HTTPS.
Более того, в SQLyong встроен SSH-клиент и, если у тебя в распоряжении есть
нормальный хостинг с поддержкой Secure Shell, то можно (и даже - нужно)
использовать SSH-туннелинг. Это, во-первых, позволит установить безопасный канал
связи между SQLyog и MySQL сервером, и, во-вторых, позволит обратиться до
демона, даже в том случае, если его порт (по умолчанию 3306) закрыт. Нужно лишь
указать адрес и порт SSH-хоста (предполагается, что демон баз данных находится
на той же машине), указать пароль или приватный ключ для доступа по SSH, а также
данные авторизации непосредственно для MySQL демона. Такое соединение работает
более стабильно, чем через вспомогательный HTTP-скрипт.
Впрочем, различные варианты соединения с сервером - это естественно не
единственный плюс программы. Вообще, SQLyon - это своего рода новатор, который
зачастую первым вводит самые сочные и свежие фичи. Не будем касаться банальных
функций, вроде создания таблиц и редактирования их структуры и содержимого -
смею заверить, реализованы они на самом высоком уровне. Классно реализованная
система табов позволяет оперировать сразу с несколькими запросами, а система
Smart Autocomplete помогает составлять запросы и автодополняет имена баз и
таблиц. К тому же в SQLyog встроен профайлер запросов - уникальное
средство для отладки и оптимизации запросов. Профайлер показывает, сколько
времени уходит на выполнения запроса, раскладывая по полочкам каждую из
составляющих его выполнения (передача запроса, открытие таблиц, блокировка
таблиц и т.д.). Таким образом можно выявить наиболее дорогие операции и
попробовать избавиться от них. Например, с помощью создания индекса для нужной
таблицы. Или более радикально - путем увеличения размера кэша для. Таким
образом, это еще и отличный способ, чтобы оценить эффект от изменения тех или
иных настроек сервера.
В SQLyog встроен мощнейший механизм для синхронизации баз данных,
причем управлением этим процессом максимально упрощено с помощью специального
мастера. На разных шагах вводится: параметры серверов и баз данных, направление
синхронизации, сравниваемые поля и т.д. Аналогичным образом настраивается и
автоматический бэкап по расписанию. Вообще, сильно радует общая продуманность
программы, благодаря которой SQLyog одинаково успешно могут использовать
как продвинутые пользователи, которым обязательно придется по вкусу, например,
редактор хранимых процедур, так и начинающие пользователи, в руках которых
окажутся простые визуальные средства для составления запросов и проектирования
структуры базы данных.
SQLyog распространяется в двух версиях: бесплатной Community и платной
Enterprise-вариации. К сожалению, наиболее сочные фишки программы вроде
визуальных редакторов, туннелирования и автодополнения запросов в фриварной
версии урезаны, но даже при такой функциональности SQLyog на две головы
выше phpMyAdmin.
dbForge Studio
На официально страничке программы среди пользователей известный бренды:
Hitachi, Honda, Samsung, BMW, Siemens. От этого вдвойне приятно, что
dbForge
Studio абсолютно бесплатна для некоммерческого использования. По
большому счету это еще один удобный фронт-енд для работы с базами данных MySQL.
Составлять и выполнять запросы, редактировать данные, осуществлять их экспорт и
импорт, разрабатывать SQL-скрипты и хранимые процедуры - получаем стандартный
набор функций, но даже при качественной реализации он мало кого удивит. Но
добавь к этому отладчик хранимых процедур, визуальных редактор для составления
SQL-запросов, классный редактор кода с автодополнением команд и имен баз/таблиц
- и возможно ничем другим пользоваться ты уже не захочешь.
Ручная отладка хранимых процедур и триггеров с промежуточными выводами и
вычислениями в голове, возможно, и отдает олдскульной романтикой, но в
большинство случаев дико тормозит разработку. Зато шикарный отладчик хранимых
процедур, встроенный в dbForge Studio, - выше всяческих похвал. Прямо в
редакторе кода можно в нужном месте установить точки останова, провести
выполнение всей или части процедуры по шагам, и на каждой итерации отслеживать
значения переменных и результатов выполнения запросов. Кстати говоря,
SQL-запросы вовсе необязательно набирать вручную - к твоим услугам специальный
визуальное средство. Оно вряд ли поможет, если нужно сварганить действительно
сложный запрос, но зато окажет неоценимую помощь тем, у кого с SQL пока не лады.
Вообще визуальные средства и в особенности конструктор базы данных - это один
из главных козырей dbForge Studio. Если нужно быстро сварганить базу, то
лучшего решения, пожалуй, не найти. Помещаешь на рабочей области разные
сущности, устанавливаешь связи между ними, редактируешь параметры полей - и база
готова к использованию. Примечательно, что прямо из визуального конструктора
можно обратиться к любому элементу базы, будь это обычное поле таблицы или же
хранимая процедура. Очень удобно использовать уже тогда, когда база готова, но
нужно быстро найти и подправить один из ее элементов - лично я так и делаю.
dbForge Studio может похвастаться продвинутым экспортом данных. Мастер
экспорта позволит выбрать нужные столбцы и колонки, задать различное отображение
данных, и преобразовать данные в один из следующих форматов: Text, DBF, HTML, MS
Access, MS Excel, ODBC, PDF, RTF, CSV и XML.
Важный момент - подключение к базе данных. Честь и хвала разработчикам,
которые не поленились реализовать возможность одновременного подключения к
разным серверам, причем помимо прямого коннекта поддерживает туннелирование
через по SSL, SSH и HTTP.
"А ничего ли вы не забыли?"
Возможно, прочитав материал, кто-то удивиться: "А как же программа Navicat
или какая-нибудь еще?". Но мы и не ставили цель рассказать обо всех решениях
сразу и осознано обходили стороной коммерческие продукты (как Navicat). Вместо
этого мы хотели поделиться опытом, рассказать какие решения и когда нам
пригодились. И самое главное - открыть глаза тем, кто по-прежнему использует
один лишь phpMyAdmin, отказывая себе в использовании отличных инструментов.
Решение под Linux и Mac OS
Благодаря системе подключаемых плагинов SQuirreL SQL Client (www.squirrelsql.org)
поддерживает самые разные базы данных (Oracle, MySQL, PostgreSQL, IBM DB2 -
всего более 20). Собственно для начала работы необходимо выбрать нужный драйвер
(плагин) и создать так называемый алиас - набор настроек для подключения к
серверу. Но самая главная фишка, в том что беличий клиент написан на Java и
поэтому отлично запускается под любой платформой: как под виндой, так и линуксом
и макосью. Впрочем, универсальность - это не единственный конек. Помимо
приятного просмотрщика таблиц, в проге реализованы несколько визуальных
инструментов, с помощью которых, например, можно построить граф, отображающий
связи между таблицами. Очень качественно выполнен и редактор запросов, в
арсенале которого есть и подсветка синтаксиса, и встроенный IntelliSense
(достаточно нажать Сtrl + Space для автодополнения названий таблиц или команд),
ускоряющие процесс написания запросов. Чтобы быстро просмотреть список всех
доступных функций, достаточно нажать Ctrl + t. Более того, редактор поддерживает
шаблоны. Например, если лень каждый раз набирать ручками конструкции типа CREATE
TABLE или INSERT VALUES, то можно воспользоваться соответствующими сниппетами.
Нужно лишь нажать Ctrl + j и в появившемся списке выбрать интересующую тебя
конструкцию. Если встроенных шаблонов недостаточно, то ничто не мешает
пользователю составить свои собственные. По аналогии с офисными пакетами
редактор поддерживает проверку синтаксиса и аббревиатур. Если в скрипте написать
"SF", то программа предложит заменить это на "SELECT * FROM", "FORM" заменит на
"FROM" и т.д.
Аналоги phpMyAdmin
Архив phpMyAdmin занимает как минимум пару мегабайт, но что мы получаем после
установки? Навороченный скрипт, который хотя и проверен временем, но чересчур
перегруженный для комфортной работы. К тому же одно дело - установить phpMyAdmin
на своем серваке и совсем другое - быстро залить на какой-нибудь левый сервак
скрипт для быстрого доступа к его БД. В общем, даже среди web-решений есть
несколько других достойных инструментов, заслуживающих внимания.
SQL Buddy (www.sqlbuddy.com)
- классная PHP-оболочка для быстрого доступа к базе данных. Главная фишка SQL
Buddy - поддержка Ajax, позволяющая просматривать и редактировать данные в базе
без перезагрузки страницы (что дико надоедает в phpMyAdmin). В основе лежит
JavaSript-фреймворк MooTools, поэтому скрипт отлично чувствует себя под всеми
современными браузерами. Установить скрипт проще простого: достаточно залить
файлы SQL Buddy на сервер.
RST MySQL 2.0 (rst.ghc.ru) -
наилучший вариант, если необходимо посмотреть базу данных на каком-нибудь левом
сервере. В одном единственном PHP-файле, размером в 80 Кб, разработчики
реализовать полноценную утилиту для работы с MySQL. Залив этот небольшой файлик,
ты сможешь обратиться к любым базам и таблицам, выполнить произвольный запрос,
отредактировать данные или сделать дамп.
WWW
Другие аналогичные программы, не вошедшие в наш обзор.
MySQL GUI Tools:
http://dev.mysql.com/downloads/gui-tools/
Toad for MySQL:
http://www.toadsoft.com/toadmysql/
EMS SQL Manager for MySQL:
http://sqlmanager.net/en/products/mysql/manager