Универсальный сервер баз данных с открытым исходным кодом

Серверов баз данных на рынке сегодня более чем достаточно. В условиях такого изобилия на мощные полнофункциональные решения с открытым исходным кодом часто не обращают особого внимания. А ведь некоторые из этих серверов являются вполне достойными конкурентами коммерческих решений по таким показателям, как производительность и надежность.

MySQL — это сервер базы данных стандарта SQL, распространяемый как по коммерческой лицензии, так и по лицензии продукта с открытым исходным кодом. Чтобы распространять продукты, использующие MySQL, но не относящиеся к категории изделий с открытым исходным кодом (речь, например, может идти о продуктах, распространяемых в соответствии с лицензией GNU General Public License-GPL), необходимо приобрести лицензию на использование MySQL. Во всех остальных случаях платить за MySQL не нужно — вне зависимости от того, как применяется продукт: для создания сложной системы управления сетью или развертывания Web-приложений в Internet.

Сервер MySQL отличается от других решений, таких как Microsoft SQL Server, тем, что в MySQL не предусмотрена возможность использования внешних ключей, а также функции для работы с некоторыми современными SQL-конструкциями, например подзапросами. Эти функции будут реализованы в новых версиях программы, которые в настоящее время проходят стадию альфа-тестирования. Но наряду с различиями можно отметить и немало сходных черт. Так, MySQL обеспечивает возможность тиражирования, защиту на уровне баз данных, таблиц и столбцов. В этом изделии реализован открытый интерфейс взаимодействия с базами данных ODBC и возможности масштабирования. Кроме того, в комплект поставки MySQL входят инструменты командной строки, позволяющие работать с сервером базы данных из окна командной строки или с помощью сценариев оболочки; наконец, продукт поставляется с графическими средствами управления, такими как MySQL Control Center (MySQLCC).

Установка MySQL на сервере

Перед тем как приступать к установке пакета MySQL, нужно загрузить с Web-узла MySQL (http://www.mysql.com/downloads) новейшую версию продукта (на момент написания этой статьи новейшей версией была версия 4.0.13). Загрузив файлы, следует распаковать архив и, зарегистрировавшись в системе в качестве администратора, запустить утилиту setup.exe. Она установит на компьютере программные файлы MySQL. Данный пакет можно запускать на системах Windows 95 и более поздних версий, но я рекомендую устанавливать их на Windows 2000 и более поздних версиях. По умолчанию программа установки копирует файлы MySQL в каталог C:mysql. Если MySQL устанавливается в производственной системе, необходимо рассмотреть возможность размещения данных и файлов журналов на отдельном накопителе, как если бы вы работали с системой SQL Server. Дело в том, что если выделить для размещения данных и файлов журналов отдельный накопитель, то не придется беспокоиться о том, что разрастающаяся база данных со временем поглотит все пространство на основном жестком диске. Кроме того, можно будет настроить файловую систему таким образом, чтобы добиться повышения производительности и эффективности использования дискового пространства без отрицательных последствий для других приложений.

По завершении установки нужно будет запустить службу MySQL. Необходимо запустить программу WinMySQLAdmin из подкаталога mysqlin. Программа предложит ввести имя пользователя и пароль. Если ввести эти данные, WinMySQLAdmin сохранит их в файле %USERPROFILE%windowsmy.ini с тем, чтобы использовать полученную информацию в дальнейшем, при регистрации на сервере MySQL. Впрочем, если нужно всего лишь опробовать процедуру установки, достаточно просто щелкнуть на кнопке Cancel, и программа WinMySQLAdmin откроет, установит и запустит службу MySQL, а затем автоматически свернет окно и будет отображаться в системной панели задач в виде значка светофора.

Теперь загружаем программу MySQLCC (http://www.mysql.com/downloads/mysqlcc.html). Эта программа подобна диспетчеру SEM (SQL Enterprise Manager) в том смысле, что она позволяет создавать и отключать (т. е. удалять) базы данных и таблицы, а также задавать пользователей и списки управления доступом (ACL). MySQL поставляется с инструментальными средствами для командной строки, часть из которых можно задействовать для управления MySQL или для выгрузки и загрузки баз данных и таблиц с целью последующего резервирования, но администраторам, не имеющим опыта работы с MySQL, будет проще пользоваться программой MySQLCC. В процессе разработки находится еще более удобное средство: когда будет выпущена программа MySQL Administrator, администраторы получат визуальный интерфейс для выполнения таких задач, как создание баз данных и отслеживание состояния репликации. Подробную информацию о средстве MySQL Administrator можно получить по адресу http://www.mysql.com/products/administrator.

В заархивированном дистрибутиве mysqlcc-0.9.4-win32.zip следует запустить на выполнение программу setup.exe или mysqlcc.msi. В результате будет активизирован мастер MySQL Control Center Setup Wizard. Он установит программу MySQLCC, к которой можно будет обращаться, выбрав в меню Start пункты Programs, MySQL Control Center, MySQL Control Center. Когда программа MySQLCC будет запущена в первый раз, она предложит ввести имя соединения (например, My Connection), имя главной системы (например, localhost, mysql.example.com) и регистрационные данные для обращения к серверу MySQL. В поле User Name нужно указать имя главного пользователя, а поле Password оставить незаполненным. По умолчанию поле пароля для главного пользователя MySQL, как и в учетной записи administrator систем SQL Server, остается пустым. О том, как ликвидировать этот пробел в системе безопасности, рассказано во врезке «Предопределенные учетные записи MySQL». Далее следует щелкнуть на кнопке Add и открыть новое соединение, выполнив двойной щелчок на профиле для нового сервера MySQL.

Создание баз данных и обращение к ним

Теперь можно приступить к созданию базы данных. Открыв соединение, вы увидите окно диспетчера Console Manager программы MySQLCC. Правой клавишей мыши следует щелкнуть на значке Databases, выбрать элемент New Database и в качестве имени базы данных ввести NetworkData. Ниже я представлю сценарий, в котором эта база данных используется для идентификации серверов, где нужно установить модули коррекции, а также для установки этих модулей.

Экран 1. Создание таблицы MySQL

Чтобы создать таблицу в базе данных NetworkData, необходимо выполнить двойной щелчок на NetworkData, а затем правой клавишей мыши щелкнуть на Tables и выбрать New Table. Программа MySQLCC отобразит окно с надписью Creating Table in database «NetworkData». Как показано на экране 1, данное окно содержит три столбца: Field Name, Allow NULL (в этом столбце указывается, что соответствующее поле может принимать значение null, то есть быть незаполненным) и Data Type. Поскольку этой базой данных предстоит пользоваться для того, чтобы фиксировать модули коррекции, необходимые для некоторых серверов, мы будем хранить два значения: имя сервера и имя приложения, выполняемого на этом сервере. В первое поле Field Name следует ввести значение Computer, и пусть varchar будет в Data Type. Во второе поле Field Name нужно ввести значение App, и опять пусть varchar будет в Data Type. Далее требуется щелкнуть на значке Save, сохранить таблицу под именем ComputerApps и закрыть окно, в котором создавалась таблица.

Как и любая другая многопользовательская система управления реляционными базами данных, MySQL предоставляет доступ к базам данных, таблицам и колонкам в соответствии с учетными записями пользователей. Прежде чем создавать учетные записи, необходимо определить, с каких компьютеров пользователь будет подключаться к базе данных. Например, если учетная запись создается для пользователей, наделенных правами административного управления базой данных MySQL, и необходимо, чтобы администраторы могли обращаться к этой записи только с серверной консоли MySQL, нужно обеспечить для данной записи доступ только к локальной машине. Чтобы обеспечить доступ к базе данных с любой машины сети, следует создать по одной учетной записи для каждого адреса компьютера удаленного клиента, где в качестве адреса используется либо имя клиента, либо его TCP/IP-адрес. Есть и другое решение: при указании учетной записи в разделе Host записи можно просто использовать знак процента (%). Знак % выступает в роли символа шаблона и обеспечивает доступ к базе данных с любой удаленной машины. Например, одному сотруднику предстоит обращаться к базе данных только с серверов server1 и server2, а другому требуется доступ с любой машины. В табл. 1 показаны учетные записи, которые нужно создать для обеспечения доступа в соответствии с указанными условиями.

Для базы данных NetworkData необходимо обеспечить доступ из любой точки сети, поэтому нужно создать две учетные записи — networkdata_user@localhost и networkdata_user@%. Чтобы создать эти записи, в окне MySQLCC правой клавишей мыши следует щелкнуть на элементе User Administration и выбрать New User. В поле Username нужно ввести имя networkdata_user, в поле Host — имя localhost. Кроме того, введите пароль, как показано на экране 2. Нужно особо указать, что networkdata_user имеет доступ к базе данных NetworkData; для этого на панели Allow access to следует выставить флажок, расположенный рядом с networkdata. Наконец, необходимо щелкнуть на кнопке Add (будет создан новый пользователь) и на кнопке Close. Описанные операции нужно повторить, чтобы создать еще одну учетную запись с тем же именем пользователя, но на этот раз в поле Host следует ввести символ %.

Экран 2. Создание учетной записи MySQL

Подключение к MySQL из приложений Windows

Следующий этап — обращение к базе данных NetworkData из приложения Windows, а именно из Microsoft Access. Для подключения к MySQL можно использовать несколько методов, что очень удобно в тех случаях, когда приходится создавать интерфейсы для пользователей (здесь лучший вариант — Access или даже Visual Basic, VB) либо для сценариев оболочки (в этом случае важную роль играют средства командной строки MySQL).

С клиентской машины следует загрузить Connector/ODBC, ODBC-драйвер для MySQL с открытым исходным кодом (ранее известный под названием MyODBC). Его можно получить по адресу http://www.mysql.com/downloads/api-myodbc.html. Требуется щелкнуть на гиперссылке, указывающей на новейшую версию продукта, перейти в раздел продуктов, доступных для использования в среде Windows, и загрузить утилиту Driver Installer. При подготовке данной статьи я пользовался версией Connector/ODBC Driver Installer 3.51.06. Далее нужно запустить установочную программу и следовать инструкции.

После этого необходимо настроить Data Source Name (DSN). DSN — это средство, обеспечивающее независимость ODBC-соединений базы данных от использующих их приложений. Так, работая с Access, можно с помощью Database Connection DSN установить соединение с базой данных SQL Server. Позднее, возможно, придется вместо SQL Server установить MySQL, для чего нужно будет перенастроить Database Connection DSN. Если же сохранить для DSN имя Database Connection, не придется дополнительно настраивать и Access.

Чтобы настроить DSN, следует открыть меню Administrative Tools и запустить инструмент Data Sources (ODBC). Можно выбрать либо User DSN, либо System DSN. System DSN применяются в пределах всей системы, тогда как User DSN может использоваться лишь прошедшим регистрацию пользователем, создавшим данный DSN ресурса. Щелкните на кнопке Add, на элементе MySQL ODBC 3.51 Driver и на кнопке Finish. В открывшемся окне конфигурации MySQL Connector/ODBC есть несколько полей, которые предстоит заполнить. В поле Data Source Name следует ввести описательное имя для DSN, например NetworkData. В поле Host/Server Name (or IP) нужно ввести имя сервера MySQL или адрес TCP/IP. В поле Name требуется набрать символы NetworkData, а в полях User и Password — соответственно networkdata_user и подходящий пароль. Перед тем как продолжить работу, необходимо убедиться, что соединение функционирует; для этого надо щелкнуть на Test Data Source.

Теперь вы можете обращаться к таблицам базы данных NetworkData из Access 2000. Требуется выполнить следующие операции:

  • запустить Access;
  • создать новую незаполненную базу данных;
  • в объекте Tables правой клавишей мыши щелкнуть на окне Tables и выбрать элемент Link Tables; для параметра Files of type нужно установить значение ODBC Databases.
  • в появившемся на экране окне Select Data Source задать значение DSN; для этого нужно выбрать элемент Machine Data Source;
  • в окне Machine Data Source выбрать элемент NetworkData DSN; когда Access отобразит окно Link Tables, следует выбрать ComputerApps.
  • в диалоговом окне Select Unique Record Identifier выбрать поля Computer и App, удерживая при этом нажатой клавишу Shift.

Теперь вы можете, не выходя из Access, редактировать данные таблицы ComputerApps. Для этого нужно создать форму Access, как показано на экране 3, или выполнить двойной щелчок на значке ComputerApps в окне Tables.

Экран 3. Редактирование таблицы MySQL с помощью формы Access

По мере заполнения таблиц базы данных NetworkData у вас появится возможность создавать отчеты на основании ее данных с помощью таких средств, как Crystal Reports компании Business Objects, или встроенной функции генерации отчетов Access.

Работа с сервером MySQL из командной строки

Одно из главных достоинств сервера MySQL — это инструмент командной строки Mysql, который по умолчанию устанавливается в каталоге C:mysqlin и не требует ODBC-соединения. С помощью Mysql можно выполнять самые разные операции, от блокировки таблиц базы данных до вставки и удаления строк в таблице, — и все это из командной строки. Mysql можно использовать как в интерактивном, так и в командном режиме (например, в качестве пакетного файла); это зависит от того, в каком формате вызывать эту команду. Чтобы запустить Mysql в интерактивном режиме, нужно просто набрать команду в командной строке и указать имя главной машины, данные учетной записи и базы данных, которую предполагается использовать, — так же, как я проделал все это в демонстрационном сеансе работы с командной строкой, показанном на экране 4. Во введенной мною команде ключ -h специфицирует TCP/IP-адрес сервера MySQL или имя главной машины (например, mysqlsvr). По умолчанию сервер определен как localhost, так что, если команда Mysql подается с сервера MySQL, этот ключ можно опустить. Ключ -u указывает имя пользователя MySQL, а ключ -p указывает на то, что предлагается утилите Mysql подсказать пароль. О том, как пользоваться анонимными соединениями, не требующими паролей, рассказано во врезке «Предопределенные учетные записи MySQL».

Использование MySQL в сценариях

Для использования инструмента Mysql в командном варианте (например, в сценарии оболочки) применяется ключ -e, за которым следует выполняемый оператор SQL и ключ -p. В последнюю очередь указывается пароль учетной записи. В приведенной ниже команде оператор SQL используется с символом шаблона звездочка (*), который указывает на необходимость выбрать все столбцы таблицы ComputerApps базы данных NetworkData. Полученные данные (показанные на экране 5) распечатываются.

C:mysqlin>mysql -h mysqlsvr

-u networkdata_user

-p

-e «SELECT * FROM ComputerApps»

NetworkData

Чтобы утилита Mysql не перечисляла имена столбцов и выводила данные на печать в виде таблицы, как показано на экране 5, необходимо задействовать в сценариях оболочки параметр -B и параметр -skip-column-names. При использовании этих параметров Mysql представляет информацию в виде полей, разделенных знаками табуляции. Данные в этом формате могут с легкостью анализироваться сценариями оболочки. Подробную информацию об имеющихся параметрах Mysql можно получить, вызвав команду Mysql с параметром -help.

Сценарий управления модулями коррекции

Предположим, некий администратор управляет сетью с большим числом серверов, и на каждом из них нужно своевременно устанавливать все появляющиеся модули коррекции. Он решает развернуть специальное средство управления модулями коррекции на базе сервера MySQL, сценариев оболочки и средства Qchain. Администратор создает таблицу ComputerApps и вносит в нее данные об операционных системах и приложениях, выполняемых на всех серверах. Затем для обращения к этой таблице он использует сценарий оболочки, представленный в листинге 1.

Для установки соответствия между локальным именем сервера и именем сервера в таблице ComputerApps, а также для извлечения списка прикладных программ, установленных на этом сервере, сценарий выполняет команду SQL SELECT, в которой содержится оператор WHERE, как показано в метке B листинга 1. Практически вся логика сценария содержится в цикле For, показанном в метке C. Этот код анализирует список и вызывает для каждого приложения соответствующую подпрограмму (например, для Microsoft IIS вызывается подпрограмма :IIS). Подпрограмма определяет, требуется ли для данного приложения модуль коррекции, и в случае необходимости устанавливает соответствующий модуль.

В данном сценарии представлена базовая реализация средства управления модулями коррекции; в ней предусмотрено управление модулями только для Windows 2000 и для сервера IIS. Администратор может с легкостью адаптировать сценарий в соответствии с особенностями своего сайта и расширить его так, чтобы обеспечить установку модулей коррекции — и даже сценариев защиты — на других программных средствах. Чтобы адаптировать сценарий под конкретный сайт, необходимо найти код, показанный в метке A; изменить значение переменной SVR (вместо mysqlsvr ввести имя сервера MySQL), изменить значение переменной DB так, чтобы она указывала на базы данных MySQL, для переменной USER задать значение username, в переменной PW указать значение пароля пользователя и заменить значение переменной PATCH_UNC, указав вместо него путь к файлам модуля коррекции. Настроив сценарий для использования в сети, можно будет выполнять его автоматически — с помощью Scheduled Tasks — или вручную в периоды остановок для профилактического обслуживания.

Приведем еще один пример, показывающий, какие серьезные задачи может решать даже простая база данных NetworkData. Представим себе, что на системе, где только что была установлена Windows Server 2003, выполняется набор разработанных внутри компании сценариев, которые применяются после установки сервера. По таким критериям, как имя сервера и записи в базы данных NetworkData, эти сценарии определяют требования со стороны приложений сервера, устанавливают и конфигурируют внесенные в список прикладные программы и затем выполняют сценарии защиты (например, для IIS). Автоматизацию этих задач предусматривает любой план восстановления после аварийного сбоя, и такое решение станет настоящим подарком для администраторов, которым приходится что ни день развертывать новые серверы.

Универсальность и низкие затраты

Развернув в своей сети сервер MySQL, администратор сможет снизить затраты на лицензирование, а также эксплуатационные расходы и при этом обеспечить централизованное хранение важной для всей компании информации. Возможно, с помощью MySQL вы будете создавать информационную систему уровня предприятия, а может быть — формировать централизованное хранилище сценариев. В любом случае вы наверняка оцените неоспоримые достоинства этого мощного и экономичного сервера баз данных.


Дастин Пурье (dpuryear@usa.net) — сетевой администратор, автор заметок в 32BitsOnline.com, а также автор книги «Integrate Linux Solutions into Your Windows Network» (Prima)


Предопределенные учетные записи MySQL

Сервер MySQL поставляется с четырьмя заданными учетными записями: root@localhost, root@%, @% и @localhost. С помощью записей root@localhost и root@% пользователи с правами администратора создают новых пользователей, базы данных и т. д. Записи @% и @localhost применяются для организации соединений, которые, в соответствии с терминологией MySQL, называются анонимными. По анонимным соединениям MySQL обеспечивает доступ для пользователей, не предоставляющих учетные данные. На этапе знакомства с MySQL упомянутые соединения могут пригодиться. Но они пробивают брешь в системе безопасности, поэтому в производственных сетях анонимные соединения обязательно нужно удалять. Для удаления таких соединений в окне программы MySQL Control Center (MySQLCC) следует выполнить двойной щелчок на элементе User Administration, правой клавишей мыши щелкнуть на учетных записях @% и @localhost, после чего щелкнуть на элементе Delete User.

Находясь в этом меню, можно заодно изменить пароль главного пользователя (по умолчанию поле пароля остается незаполненным). Для этого правой клавишей мыши нужно щелкнуть на учетных записях root@local host и root@%, щелкнуть на элементе Edit User и обновить пароль.