|
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 предоставляет всем эту возможность
совершенно бесплатно. Это действительно одна из самых
мощных, быстрых и надежных СУБД.
Автор: Алексей Литвинюк
Рекомендуем: статьи о поисковых системах
|
|