div.main {margin-left: 20pt; margin-right: 20pt}
MySQL. Установка. Настройка.
Программирование
На сегодняшний день СУБД MySQL является одной из самых известных,
надежных и быстрых из всего семейства существующих СУБД. Почему именно она?
Одной из причин являются правила ее распространения — за нее не надо платить
деньги и распространяется она вместе со своими исходными текстами. Однако
многие могут возразить, ведь есть же PostgreSql, почему не она? Да,
действительно PostgreSql также распространяется под лицензией *GNU GPL, но она
не получила столь широкого распространения. Одна из причин — это заметная
медлительность. Сегодня MySQL особенно распространена на платформах Linux и
Windows. Причем на последней встречается гораздо реже. В этой статье я хотел
бы поделиться с читателем личным опытом установки, конфигурирования,
администрирования и программирования СУБД MySQL (в дальнейшем для простоты
будет упоминаться просто MySQL).
Для начало мне бы хотелось
познакомить читателя с принципами работы СУБД, которые используют SQL в
качестве командного языка. SQL — (Structured Query Language, язык
структурированных запросов) сердце любой современной СУБД. Он используется для
создания/удаления баз данных, таблиц, для пополнения таблиц данными, для
осуществления выборки данных. Эта тема заслуживает отдельной статьи, но тем,
кому это действительно необходимо, я бы посоветовал прочесть книгу Мартина
Грубера "Понимание SQL". Исходя из этого, любая СУБД представляет собой
программу-сервер, которая сидит в памяти компьютера и обслуживает TCP порт. В
случае с MySQL, номером порта будет являться число 3306. А клиентская
программа, будь то CGI-приложение на Perl либо полноценный программный продукт
для предприятия на C, соединяется с СУБД по этому порту и посылает ему строчки
на SQL. Тот в свою очередь их интерпретирует, выполняя необходимые действия, и
отсылает результаты запроса обратно клиенту. Таким не хитрым способом
происходит общение сервера баз данных с клиентскими программами. Теперь, имея
некоторое понятие о том, каким образом работают серверы баз данных, перейдем
непосредственно к установке MySQL.
Установка MySQL написан
под десятки видов операционных систем. Это и FreeBSD, OpenBSD, MacOS, OS/2,
SunOS, Win9x/00/NT и Linux. Мною использовался дистрибутив Red Hat Linux 7.0.
В силу своей простоты, данный дистрибутив не заставил мучаться с установкой и
произвел ее самостоятельно на этапе установки самой ОС. Если вам аналогично
повезло, то на этом этап установки для вас завершен, и вы можете смело
переходить к настройке. Для многих встает вопрос, где взять дистрибутив MySQL.
Он может находиться на диске с Linux в виде установочного модуля RPM либо в
виде архива tgz(tar.gz). Если его там нет, то дистрибутив можно совершенно
бесплатно скачать с официального сайта www.mysql.org. Для установки необходима
версия ядра не ниже 2.0. Если вы скопировали архив *.tar.gz, то для установки
скопируйте его в директорию, где вы хотите установить MySQL, и выполните
следующие действия: 1. Распакуйте архив, выполнив следующую
команду gunzip < mysql-VERSION.tar.gz | tar xvf - где, вместо
VERSION, будет версия вашего дистрибутива (к примеру, у меня 3.23.22-beta). В
результате будет создана директория mysql-3.23.22-beta, где находятся файлы
дистрибутива. 2. Перейдите в эту директорию. cd mysql-3.23.22-beta 3.
Подготовка к установке. ./configure --prefix=/usr/local/ mysql make В
данном случае MySQL будет установлен в директорию /usr/local/mysql. В случае
фатального завершения следующих команд необходимо внимательно ознакомиться с
выведенными ошибками. В случае чего можно обратиться к документации. 4.
Непосредственно установка. make install 5. Теперь необходимо создать так
называемые grant таблицы. Для этого необходимо выполнить следующий
скрипт: scripts/mysql_install_db Теперь можно удалить директорию, в
которую вы распаковывали архив дистрибутива, после чего можете удостовериться,
что MySQL был проинсталлирован в указанную директорию (в нашем случае — это
/usr/local/mysql). Для того чтобы запустить сервер СУБД MySQL, следует
выполнить скрип_f2 safe_mysqld, который находится в директории /usr/
local/mysql/bin. На этом процесс инсталляции из архива tgz(tar.gz)
можно считать выполненным. В случае если вы устанавливаете MySQL из
установочного пакета RPM, то процесс инсталляции оказывается намного проще.
Для установки пакетов RPM существует утилита rpm. Чтобы установить пакет, вам
достаточно набрать следующую команду: rpm -i
mysql-3.23.22-beta.rpm Теперь, когда вы выполнили эту команду, вы можете
смело запускать safe_mysqld для первого старта MySQL. После того, как мы
установили непосредственно MySQL, необходимо установить также модули Perl,
чтобы Perl мог работать с базами данных посредством технологии DBI/DBD. Об
этой технологии будет рассказано чуть позже. Вам лишь необходимо скачать
установочный пакет DBI с сайта www.cpan.org, а также установочный пакет
драйвера DBD с сайта www.mysql.org и установить их таким же образом, как мы
устанавливали MySQL. После установки всех вышеперечисленных пакетов смело
можно переходить к настройке.
Настройка Если установка была
произведена корректно, то на данном этапе вы уже можете использовать MySQL в
своих целях. На пятом этапе, когда вы запускали скрипт
scripts/mysql_install_db, у вас появилась новая база данных
'mysql'. В ней скрипт создал шесть таблиц: 'user', 'db', 'host',
'tables_priv', 'columns_priv' и 'func'. Эта база данных необходима для
установления привилегий пользователям. По умолчанию сервер MySQL использует
номер порта 3306. Если данный порт у вас чем-то занят, то необходимо
переопределить переменную MYSQL_TCP_PORT. Например, вот
так: MYSQL_TCP_PORT=3307 export MYSQL_TCP_PORT Также можно поменять и
другие параметры. В этом может помочь скрипт mysql_config. С его помощью можно
менять, к примеру, директорию, где хранятся файлы баз данных, имя UNIX сокета,
директорию временных файлов и пр. Чтобы проверить, правильно ли вы все
сделали, запустите MySQL, перейдя в директорию, где находятся исполняемые
файлы, и выполните команду: ./safe_mysqld & Теперь наберите
'./mysqlshow mysql'. Вы должны увидеть что-то похожее: Database:
mysql
Tables columns_priv db func host tables_priv user Если не
было выдано никаких ошибок, то можете смело набирать './mysql' и по
полученному приглашению набирать команды SQL и не забывать ставить ";" после
каждой команды. Для примера выполните следующие команды
последовательно: CREATE DATABASE GRYADKA; CREATE TABLE MAIN(a00 INTEGER,
a01 CHAR(10)); INSERT INTO MAIN VALUES(1,'Hello world!'); SELECT * FROM
MAIN; После ввода последней строки вы должны увидеть таблицу: a00
a01 1 Hello world! Если так и произошло, то поздравляю, вы создали свою
первую базу данных GRYADKA в СУБД MySQL. В этой базе данных существует
единственная таблица с именем MAIN, которая, в свою очередь, содержит
единственную запись. Настало время приступить к написанию программ, которые
будут работать с установленной и настроенной вами СУБД MySQL. Если по
каким-либо причинам сервер MySQL не запускается, то вам следует обратиться за
помощью к справочному руководству.
Программирование В этом
разделе хотелось бы рассмотреть возможности языка Perl для работы с MySQL.
Может быть, не честно обходить вниманием возможности языка C и его интерфейс
взаимодействия с СУБД, однако сегодня MySQL более широкое распространение
получил на Web-серверах. А Perl как нельзя лучше других языков подходит для
написания CGI-приложений. Многие могут возразить, что приложения на C работают
намного быстрее. И это факт. Но у Perl есть мощность, простота и кое-какая
платформонезависимость. Ну, а его регулярные выражения и прочие синтаксические
особенности несоизмеримо превозносят его над другими языками
программирования. Итак, на этапе установки мы установили все необходимое
для того, чтобы приложения на Perl могли взаимодействовать с MySQL. Это
взаимодействие можно изобразить на схеме: Прикладные программы–>DBI
–>DBD–>СУБД Как уже упоминалось выше, DBI обеспечивает единый
интерфейс взаимодействия с различными системами управления базами данных. А
DBD связывает этот интерфейс непосредственно с конкретной СУБД. В
нашем случае это mysql. Исходя из этого, понятно, что для того, чтобы наша
программа могла общаться и работать с базой данных, необходимо подключить
модуль DBI и драйвер DBD. Это выполняется следующими операторами: use
DBI; use DBD::mysql; Для того чтобы мы могли выполнять SQL запросы к
нашей базе данных, нам нужно установить логическое соединение с MySQL. Это мы
выполняем при помощи метода объекта DBI. При этом он возвращает объект
(дескриптор) соединения, который мы будем использовать для непосредственного
общения с базой данных. $dbh = DBI->connect('dbi:
mysql:dbname=GRYADKA;host=127.0.0.1;port=3306','','',0); Вызывая метод
connect, мы передаем ему некоторые параметры. Первый параметр определяет
свойства соединения. Эта строка имеет следующую
структуру: "dbi:<имя DBD>:dbname= <имя базы
данных>;host=<имя хоста>;port=<номер порта>" Далее в методе
connect определяются имя пользователя, пароль и флаги соединения. В нашем
случае имя пользователя и пароль указывать нет необходимости, т.к. мы не
создавали пользователей. Флаги передаются анонимным хэшем и в целом
необходимости в них нет. Чтобы получить более подробную информацию, смотрите
'man DBI'. Существует два способа работы с базами данных MySQL. Первый —
так называемый механизм курсоров, а второй, соответственно, без использования
таковых. Для начала рассмотрим механизм курсоров. Курсоры — это объекты
Perl, которые обеспечивают последовательный доступ к результатам
запросов. Каждый курсор отвечает за закрепленный за ним запрос. $cur =
$dbh->prepare('select * from MAIN;'); $cur — это курсор, который для
начала следует выполнить, используя метод
execute: $cur->execute; Теперь, после выполнения запроса, чтобы
получить результат запроса, используем метод fetchrow_array. Он поочередно
возвращает массив полей результативной виртуальной таблицы. К примеру, чтобы
вывести на экран все данные, воспользуемся циклом while: while (($a00,
$a01) = $cur->fetchrow_array) { $i++; print "Record #$i: a00 =
$a00, a01 = $a01. n"; } Очень часто бывает необходимо подготовить
запрос и после, при его выполнении, передавать ему различные данные. Это
довольно просто решается при помощи механизма placeholders: $cur =
$dbh->prepare('insert into MAIN values(?,?)'); где вопросительные знаки
следует заменить на значения переменных, переданных в качестве параметров
метода execute: $a00 = 2; $a01 = 'second
record'; $cur->execute($a00, $a01); Для того чтобы закрыть курсор,
необходимо выполнить метод finish. $cur->finish; Курсоры очень
удобный момент в технологии DBI. Однако можно обойтись и без них. Существует
множество методов, которые вполне неплохо заменяют курсоры: selectrow_array
— возвращает одну строку запроса в виде массива; selectall_arrayref —
возвращает весь ответ сервера в виде массива, ссылка на массивы; do —
выполняет запрос, ничего не возвращая (очень удобно при работе с insert,
update и пр.) Например: ($a01) = $dbh->selectrow_ar-ray('select a01
from MAIN where a00=1;'); # получаем значение $a01 равное 'Hello
world!' $dbh->do('update set a01 = 'hello world' where a00 = 1;'); #
изменяем значения поля a01 на 'hello world', там где a00=1 И, наконец, для
того чтобы разорвать соединение с MySQL, необходимо выполнить метод
disconnect. $dbh->disconnect; Этого, пожалуй, хватит, чтобы писать
довольно сложные программы для работы с базами данных. И виртуальный
магазин, и сервер знакомств, и всевозможные сайты, предоставляющие платные
услуги, — все нуждаются в возможности обрабатывать и хранить большие объемы
информации. MySQL предоставляет всем эту возможность совершенно бесплатно. Это
действительно одна из самых мощных, быстрых и надежных СУБД. С вопросами и
предложениями пишите мне. Постараюсь по мере сил и возможностей
ответить.
Спонсор раздела - Мажордомо (Majordomo)
Алексей Литвинюк e-mail: litvinuke@pochtamt.ru, fido:
2:454/23.41
|