Первые шаги в MySQL
Автор: Александр Лозовюк Источник: Hard'n'Soft
СУБД MySQL заслужила популярность благодаря своей достаточно высокой производительности - при создании Web-приложений она, пожалуй, способна на равных сразиться даже с такими мощными системами, как Microsoft SQL Server, Interbase и Oracle. К тому же это совершенно бесплатный продукт - исходные коды и дистрибутивы для различных платформ доступны на сайте www.mysql.org. При помощи MySQL можно создавать сайты (и их разделы) различных типов, например содержащие регулярно обновляемые ленты новостей, голосования и анкеты, а также форумы, чаты и т.д.
Хотя изначально MySQL ориентирована на Linux, устанавливать и настраивать эту ОС для разработки приложения на основе MySQL совсем необязательно - можно воспользоваться полнофункциональной версией MySQL 3.23.39 для Windows 95/98/NT. Однако специфика СУБД и ее принадлежность к миру Linux привели к тому, что процедура запуска программы в Windows не совсем удобна.
В UNIX-системах обычно запускается не сам сервер, а специальный сценарий safe_mysqld или mysql.server, в котором и задаются все необходимые опции. В Windows существует два способа работы с СУБД MySQL: посредством интерфейсной оболочки WinMySQLadmin (версия 1.1 программы включена в дистрибутив MySQL 3.23.39) и вручную - при помощи утилит командой строки. Интерфейсная утилита WinMySQLadmin позволяет просматривать содержимое баз данных, таблиц и системных настроек, вносить изменения в файл инициализации my.ini. Управление сервером MySQL производится только из командной строки при помощи утилит mysqld.exe, mysqld-max.exe (в Windows NT/2000 используются файлы с суффиксом "-nt": mysqld-nt.exe и mysqld-max-nt.exe). Замечу, что идентификатор "–max" в названии утилиты означает, что эта сборка сервера настроена на максимальное быстродействие. Существует также версия MySQL, оптимизированная под ОС Windows, - соответствующий файл называется mysqld-opt.exe. Несмотря на различия в названиях, функциональность этих программ одинакова.
Управление MySQL из командной строки
Как уже упоминалось, управление СУБД возможно только из командной строки. Это связано с тем, что доступ к серверу БД в Linux зачастую производится через удаленные терминальные сервисы. Хостинг-провайдеры могут предоставлять в распоряжение пользователя и Web-интерфейсы, однако число настроек СУБД в них, как правило, невелико.
Первая команда, которую можно и нужно освоить, - это вызов справки. Для этого вызывается утилита mysqld.exe (или иная в зависимости от ОС и типа сборки MySQL) с опцией -? или --help. Замечу, что эта команда не запускает сервер, после отображения справочной информации программа выгружается из памяти.
Почти все опции имеют две формы записи: длинную, когда в командной строке указывается полное название команды, записываемое через два тире, и короткую, как правило, однобуквенную с одним тире. Впрочем, существуют и специальные команды, не имеющие своих сокращенных аналогов, поскольку они не так очевидны и используются реже, например --skip-concurrent-insert. Также напомню, что в опциях учитывается регистр символов: команды -о и -О различны.
Опции настройки каталогов и кодировок
Как и запуск, конфигурирование СУБД MySQL осуществляется из командной строки, причем сначала нужно запустить сервер, а потом менять его параметры: задавать пути к файлам и кодировку символов. Для задания путей используются три опции: --datadir, --basedir и --tmpdir, их форматы достаточно просты - после знака равенства указывается относительный или абсолютный путь, например \mysql\data\.
Когда сервер устанавливается из дистрибутива, то по умолчанию каталог базы данных имеет путь C:\mysql\data\. Однако если необходимо переместить каталог, например, на другой диск или одновременно использовать несколько серверов, можно указать другие пути, скажем mysqld.exe --datadir="C:\sdata\db\". В короткой форме записи параметра путь задается через пробел: mysqld.exe -h "C:\sdata\db\". Команды -b (полный вариант --basedir=[путь]) и -t (--tmpdir=[путь]) служат для настройки путей к служебным и бинарным модулям MySQL, а также к временным файлам.
Другая группа параметров позволяет указать кодировки символов в таблицах БД и системных сообщениях. Путь к конфигурационным файлам задается опцией --character-sets-dir, имеющей такой же синтаксис, что и рассмотренные выше параметры. По умолчанию используется путь C:\mysql\share\charsets\. Сообщения об ошибках могут выдаваться на 13 языках. По умолчанию стоит английский, но с помощью опции -L (--language=[код языка]) язык можно изменить. Так, чтобы установить польский язык, следует исполнить одну из команд: mysqld --language=polish, mysqld -L polish или mysqld --language=\share\polish. Выяснить, какие языки поддерживаются, можно, заглянув в каталог C:\mysql\share\, в котором для каждого языка существует своя папка. Кодировка символов зависит от параметра --default-character-set=[набор символов]. Он может принимать значения koi8_ru, german1, cp1251, win1251, koi8_ukr, win1251ukr, win1250 и другие - всего в СУБД определено 30 различных кодировок, но, как правило, для создания БД с символами кириллицы разумнее использовать кодировки Windows или КОИ8-Р.
Помимо универсальных команд существуют опции, применяемые лишь на определенных платформах, например только в Linux или Windows. Команды MySQL для Windows 98/2000 задают различные способы запуска. Например, чтобы установить сервер БД как системный сервис Windows NT/2000, в командной строке нужно указать опцию --install, а чтобы удалить его из памяти - опцию --remove. В ОС Linux СУБД MySQL можно запустить в однопоточном режиме, чаще используемом при отладке, - для этого указывается опция --one-thread.
Сетевые настройки СУБД
MySQL предназначена в первую очередь для работы в Сети, для ее функционирования необходимо в явной или неявной форме задать IP-адрес (как правило, он определен в настройках Web-сервера). В том случае, если вы не задаете адрес принудительно, используется адрес компьютера, на котором запущен сервер. Если у компьютера несколько сетевых адресов, при помощи параметра --bind-address=[ip-адрес] следует явно указать серверу БД его адрес. Помимо адреса можно задать номер порта, через который устанавливается соединение с сервером MySQL. По умолчанию сервер БД "слушает" TCP-порт 3306, но опцией -P, --port=[порт] номер можно изменить.
Группа дополнительных параметров позволяет настраивать протокол работы сервера и опции хэширования хостов. Поскольку клиенты и сервер постоянно обновляются, то может случиться так, что текущая версия сервера будет использовать более новый протокол передачи, чем тот, с которым работает клиент. Для связи с клиентскими программами более старых версий опцией -o или --old-protocol можно задействовать протокол более ранней версии - MySQL 3.20. Опцией --skip-networking можно вообще запретить использование сети для подключения к базе данных. Таким образом, работа с базой данных будет происходить в однопользовательском режиме, и для доступа к серверу достаточно указывать только имя хоста localhost. Отменить использование доменных имен при доступе к базам данных можно опцией --skip-name-resolve - если сервер запущен с этой опцией, то в таблицах задания прав доступа с клиентских компьютеров нужно задавать либо их полные IP-адреса, либо адрес localhost. Редко используемая и даже не включенная в документацию к СУБД опция --skip-host-cach запрещает кэширование хостов. При запуске сервера MySQL можно выполнить некую последовательность SQL-команд, записав ее в файл и указав путь в опции --init-file=[файл].
Права доступа и форматы таблиц
Доступ к таблицам обычно осуществляется из скриптовых языков PHP или Perl - при этом каждая БД может быть защищена собственным паролем. Для запуска сервера в многопользовательских ОС, к каким относятся Windows 2000/NT и Linux/UNIX, необходимы соответствующие привилегии. Выбор учетной записи, под которой запускается сервер, - вопрос довольно сложный и важный. Как правило, сервер не должен запускаться с правами root, поэтому можно определить специальную сессию запуска БД при помощи пары команд: -u (полный формат --user=[имя]) и -p[пароль]. Первая опция указывает имя пользователя, а вторая - пароль. Впрочем, если пользователь не имеет пароля, то -р можно опустить. Опция --skip-show-database обеспечивает большую безопасность доступа к таблицам и запрещает пользователям запускать такие команды, как SHOW DATABASE или SHOW TABLES для отображения таблиц или БД, к которым пользователи не имеют прав доступа.
MySQL имеет три формата хранения таблиц - выбрать нужный можно опцией --default-table-type=[тип], принимающей значения isam, myisam, heap. Различия между ними заключаются в способе организации данных: по умолчанию используется формат myisam, тип isam ограничивает размеры каждой записи и таблицы в целом, а тип heap обычно применяется для создания временных таблиц.
Опции командной строки для управления запросами указывают приоритеты исполнения SQL-операторов. Так, опцией --low-priority-updates запросы INSERT, DELETE, UPDATE получают при выполнении приоритет ниже, чем запросы на выборку (SELECT) данных. Командой --skip-thread-priority все запросы можно уравнять в правах.
Обеспечить безопасность данных при выполнении запросов на изменение позволяет блокировка данных - по умолчанию она включена, тем не менее при необходимости можно отменить внешнюю блокировку, чтобы работать непосредственно с файлами таблиц, минуя SQL-сервер MySQL. Для этого в командной строке следует указать опцию --skip-locking. Кроме того, опцией --flush можно принудительно сохранить на диск все таблицы базы данных после изменений или обновлений.
Дополнительные опции
Прочие опции командной строки используются для протоколирования работы сервера, завершения работы СУБД и настройки ряда функций. Настроить параметры протоколирования сервера для обеспечения целостности данных можно с помощью опций, имеющих в названии "log": -l, --log=[путь] позволяет сохранять журнал в файле текстового формата; --log-bin=[путь] позволяет сохранять журнал в файле двоичного формата; --log-update=[путь] включает протоколирование запросов на изменение содержимого таблиц. Структура создаваемого файла-журнала такая, что при сбое можно восстановить предыдущие состояние базы данных, просто запустив его на выполнение как файл с SQL-командами.
Во всех перечисленных опциях указывается имя файла. Однако его можно опустить - в таких случаях протокол сохраняется в файле вида hostname.log, где hostname - имя компьютера, на котором запущен сервер БД (имена файлов с журналами запросов на изменение по умолчанию имеют вид hostname.xxx, где xxx - порядковый номер журнала).
В дополнение к трем основным опциям можно задавать формат журнала с помощью опции --log-long-format, которая позволяет заносить в журнал дополнительные сведения для выяснения причины сбоя, а опция --log-slow-queries= [путь] включает протоколирование т.н. медленных запросов (slow-queries) на обработку большого количество записей.
Запуск сервера MySQL отличается от процедуры запуска традиционных программ Windows, поскольку "родной" платформой для него является UNIX. Если вы зададите только имя и пароль пользователя (в сетевой конфигурации надо также указать хост и порт), сервер будет работоспособен, но добиться по-настоящему продуктивной и надежной работы можно только при помощи опций командной строки.
|