Реферат: MYSQL server
Название: MYSQL server Раздел: Рефераты по информатике, программированию Тип: реферат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C одержание Введение……………………………………………………………………………4 1. Общее описание, запуск и настройка прав доступа к базам данных MySQL……………………….……..…..5 2. Команды пакета MySQL……………………………………………….…..10 2.1. Основные команды………………...…………………………………..11 2.2. Дополнительные команды…………………...………………….…….23 3. Настройка mysqld (серверная часть пакета MySQL)…………………….27 4. Возможность языка Perl для работы с MySQL сервером…………...…..29 Заключение……………………………………………..………………..……….31 Список литературы………………………………………….…………………..33
Введение. На сегодняшний день СУБД MySQL является одной из самых известных, надежных и быстрых из всего семейства существующих СУБД. Почему именно она? Одной из причин являются правила ее распространения — за нее не надо платить деньги и распространяется она вместе со своими исходными текстами, другая причина – это то, что MySQL относительно быстрая СУБД. PostgreSql, например, также распространяется под лицензией *GNU GPL, но она не получила столь широкого распространения. Одна из причин — это заметная медлительность. Итак, две главные причины популярности MySQL: цена и производительность. MySQL написан под десятки видов операционных систем. Это и FreeBSD, OpenBSD, MacOS, OS/2, SunOS, Win9x/00/NT и Linux. Сегодня MySQL особенно распространена на платформах Linux и Windows. Причем на последней встречается гораздо реже. Принцип работы СУБД MySQL аналогичен принципу работы любой СУБД, использующей SQL (Structured Query Language, язык структурированных запросов) в качестве командного языка для создания/удаления баз данных, таблиц, для пополнения таблиц данными, для осуществления выборки данных. Целью данной работы является описание конфигурирования, администрирования и программирования СУБД MySQL и создание программы иллюстрирующей возможности MySQL. 1. Общее описание, запуск и настройка прав доступа к базам данных M у SQL . MySQL, как и любая другая СУБД представляет собой программу-сервер, которая находится в памяти компьютера и обслуживает TCP порт. В случае с MySQL, номером порта будет являться число 3306. А клиентская программа, будь то CGI-приложение на Perl либо программный продукт на C, соединяется с СУБД по этому порту и посылает ему строчки на SQL. Тот в свою очередь их интерпретирует, выполняя необходимые действия, и отсылает результаты запроса обратно клиенту. Таким способом происходит общение сервера баз данных с клиентскими программами. Для запуска MуSQL-сервера необходимо выполнить файл mysqld.exe. Сервер запускается как безоконный фоновый процесс. При этом он остается в памяти и обрабатывает запросы от клиентских приложений.Для остановки сервера следует выполнить команду: mysqladmin -u root shutdown. Если сервер не был остановлен корректно, то при последующем запуске в файле mysql.err будет добавлена запись о некорректном завершении. Корректная остановка сервера необходима для сохранения всех данных, которые находятся в кэшах MySQL. MуSQL имеет развитую систему доступа к базам данных. Пользователю базы данных может быть предоставлен доступ ко всей базе данных, отдельным таблицам и отдельным столбцам таблиц. Имеется разграничение на действия, которые может производить пользователь с записями. Для организации такой сложной (на первый взгляд) структуры доступа используется несколько таблиц в специальной базе данных. На основании значений этих таблиц выстраивается политика предоставления доступа. База данных, которую сервер MуSQL использует для хранения внутренней информации о пользователях, по умолчанию имеет имя mуsql. В этой базе данных определены таблицы для хранения информации пользовательских учетных записей. Содержание БД mysql в таблице 1.1. Таблица 1.1. Список таблиц прав доступа
Проверка прав доступа производится в порядке, указанном в таблице 1.1. Прежде всего проверяется, существует ли пользователь и какие возможности он имеет при управлении базой данных (таблица1.2.). Таблица 1.2. Поля таблицы user
Поля с типом Enum ( ‘N’, ‘Y’ ) считаются разрешенными, если установлено значение Y, и неразрешенными, если установлено значение N. Для администратора сервера MуSQL необходимы все привилегии, для обычных пользователей в данной таблице обычно не разрешена ни одна из привилегии, т. е. Обычные пользователи не могут изменять конфигурацию сервера MySQL. Исключением можно считать привилегии File_priv, если пользователь активно работает с файловой системой. Поле host может быть описано как IP-адрес или имя, а также может быть пустым. В имени компьютера и в имени пользователя разрешается применение регулярных выражений. Пароли хранятся в зашифрованном виде и не имеют функции обратной дешифровки. Для того чтобы задать пароль, необходимо использовать функцию password (). Если привилегии на просмотр процессов сервера не разрешены, тогда пользователь может видеть только собственные процессы. На этапе проверки значений таблицы user пропускаются для дальнейшей обработки только те соединения, у которых поля Host, User и значения функции password () от значения пароля, полученного от клиента, совпадают. Дальнейшая обработка приводится в таблице db. На этом этапе определяются привилегии, которыми обладает пользователь для работы с конкретной базой данных (таблица. 1.3). Таблица 1.3. Привилегии для работы с базой данных
Привилегии, указанные в таблице db, перекрывают значения, полученные в таблице user, именно поэтому пользователи могут не иметь ни одной привилегии в таблице user. Один пользователь может иметь несколько различных адресов, с которых может производиться подключение, поэтому на данном этапе проверяется значение Host. Если значение поле Host пусто, тогда проводится дополнительная проверка в таблице host. Таблица Host идентична таблице Db, за исключением того, что в ней отсутствует поле User. Столбцы таблицы host аналогичны столбцам таблицы db, разница состоит только в том, что данные из таблицы host при совпадении полей Host и Db имеют более высокий приоритет, и перекрывают ранее установленные значения. MySQL сервер позволяет устанавливать ограничения на доступ к отдельным таблицам и столбцам таблицы (эта информация хранится в таблицах tables_priv и columns_priv), но увеличение числа проверок приводит к уменьшению производительности.
2. Команды пакета MySQL . СУБД MySQL поставляется со следующими основными программами и скриптами: · mysql · mysqlaccess · mysqladmin · mysqld · mysqldump · mysqlshow · isamchk · isamlog · safe_mysqld Еще есть несколько утилит. Они не жизненно важны для MySQL, но обеспечивают полезные дополнительные функциональные возможности. · comp_err · msql2mysql · mysqlbug · perror · replace · which1 · zap 2.1. Основные командыmysqlКлиентская программа MySQL. Запуск: mysql [OPTIONS] database ОПИСАНИЕ: Клиентская часть СУБД MySQL названа MySQL. Она обеспечивает интерфейс командной строки с СУБД MySQL, и возможность неинтерактивной пакетной обработки. Программой mysql поддерживаются следующие опции. Можно использовать или "короткий" одиночный символ или более подробную версию.
mysqlaccessПроверка прав доступа пользователя. СИНТАКСИС: mysqlaccess [host] [user] [db] OPTIONS ОПИСАНИЕ: Скрипт mysqlaccess используется, чтобы внести в список привилегии пользователя для конкретной базы данных. Это дает информацию, которая может быть полезна при диагностировании проблем с доступом пользователей к данной базе данных. Скрипт mysqlaccess поддерживает следующие параметры (можно использовать "короткий" одиночный символ или более подробную версию):
Необходимо указать по крайней мере имя пользователя и имя базы данных, которые нужно проверить. Если имя сервера не задано, то подразумевается имя 'localhost'. mysqladminВыполняет административные функции. СИНТАКСИС: mysqladmin [OPTIONS] command command... ОПИСАНИЕ: Программа mysqladmin используется, для управления различными аспектами функционирования СУБД MySQL. Допустимы следующие опции (можно использовать "короткий" одиночный символ или более подробную версию):
mysqldСерверная часть пакета MySQL (mysqld). СИНТАКСИС: mysqld [OPTIONS] ОПИСАНИЕ: Программа mysqld является ядром СУБД MySQL. Она запускается как демон в системе и принимает подключения из клиентских программ, выполняя запросы и возвращая результаты. Она многопоточная, то есть обработает больше чем один запрос одновременно. Может наблюдаться спад производительности при использовании опции --log-isam, поскольку при этом очень многое пишется в файл протокола. Непериодические изменения, обновления и удаления могут уменьшить производительность на 5-10%. Производительность может сильно понизиться на обновлениях, требующих большого числа одновременных изменений. Опция --log-isam может использоваться, для копирования базы данных. ISAM журналы могут стать ОЧЕНЬ большими. Каждая операция UPDATE, DELETE и INSERT имеет заголовок в 13 байтов дополнительно к команде. Каждая открытая таблица требует девять байтов плюс длина имени файла таблицы. Это необходимо только для таблиц, которые еще не в кэше таблиц. Кроме того будут иметься одиннадцать байтов дополнительно для любых команд, которые кэшируют/блокируют таблицы. Эти события обычно вызваны внутренними командами mysql. Наиболее часто, когда используется SELECT. В большинстве случаев нужно выполнять mysqld из скрипта safe_mysqld . Программа mysqld поддерживает следующие опции командной строки:
Если опция -h не определена, mysql будет считать, что основной каталог = "/my/data/sql/mysql". Все базы данных размещены в каталоге [homedir]/[имя базы данных] . Опция -l должна использоваться осторожно. Когда используется сервер, с большим объемом транзакций, этот файл может стать большим очень быстро. Если не определяется имя logfile, при использовании опции -l mysqld будет писать протокол в файл [homedir]/[hostname].log. Опция -O позволяет определять значения для следующих параметров:
mysqldumpДамп содержания базы данных. СИНТАКСИС: mysqldump [OPTIONS] [database [table [field]]] ОПИСАНИЕ: Программа mysqldump используется для создания дампа содержания базы данных MySQL. Она пишет инструкции SQL в стандартный вывод. Эти инструкции SQL могут быть переназначены в файл. Можно резервировать базу данных MySQL, используя mysqldump, но при этом Необходимо убедиться, что в этот момент с базой данных не выполняется никаких других действий. Программа mysqldump поддерживает следующие параметры (можно использовать короткую или подробную версию):
Можно направить вывод mysqldump в клиентскую программу MySQL, чтобы копировать базу данных. Необходимо убедиться, что база данных не изменяется в это время, иначе получится противоречивая копию! mysqlshowПоказать информацию о сервере, базе данных или таблице. СИНТАКСИС: mysqlshow [OPTIONS] [database [table [field]]] ОПИСАНИЕ: Программа mysqlshow может использоваться, чтобы показать, с какими базами данных MySQL работает, какие таблицы данная база данных содержит, и какие поля есть в таблице в данной базе данных. Программа mysqlshow поддерживает следующие параметры:
Если последний параметр содержит '?' или '*', то они используются как подстановочные знаки. isamchkПроверка, восстановление, управление и сбор статистики по таблицам MySQL. СИНТАКСИС: isamchk [-?adeiqrsvwzIV] [-k #] [-O xxxx=size] [-Si] [-Sr #] [-O keybuffer=#] [-O readbuffer=#] [-O writebuffer=#] [-O sortbuffer=#] [-O sort_key_blocks=#] filesОПИСАНИЕ: Программа isamchk используется для проверки непротиворечивости таблиц и устранения любых проблем, которые это может вызвать. Isamchk может также использоваться, чтобы усилить таблицы в базах данных, которые содержат BLOB или поля символов переменной длины. Это необходимо только, если часто добавляются и удаляются записи из этих таблиц. Необходимо остановить СУБД MySQL перед запуском isamchk с единственным переключателем -r. Вообще, нужно использовать переключатель -rq для ремонта таблицы, потому что он выполняет "оперативный" ремонт. Для такого ремонта не нужно временного места в памяти, таким образом он проходит быстро, так как isamchk не копирует файл данных. Перед началом работы, надо перейти в каталог с таблицей, которая нуждается в проверке и/или ремонте. В общем случае, это $DATADIR/DBNAME. Опции программы isamchk:
ПРИМЕРЫ:
isamlogПолучение статистики, и использование isam-журналов. СИНТАКСИС: isamlog [-?iruvIV] [-c #] [-f #] [-p #] [-F filepath/] [-o #] [-R file recordpos] [-w write_file] [log-filename]ОПИСАНИЕ: Эта программа используется вместе с опцией --log-isam=file_name демона mysqld. Файл file_name будет хранить протокол всех изменений для всех таблиц. Программа isamlog может быть использована для получения информации об этом файле и обновить все таблицы и базы данных. Чтобы восстановить базу данных, нужна копия, которая содержит вашу базу данных до того, как mysqld сгенерировал ISAM журнал, или полный набор ISAM журналов с начала работы вашей базы данных.
safe_mysqldСкрипт для запуска демона mysqld. СИНТАКСИС: safe_mysqld [options to mysqld] ОПИСАНИЕ: Этот скрипт обычно выполняется при начальной загрузке, чтобы запустить mysqld. Если необходимо, чтобы DATADIR был помещен в иерархии каталога MySQL, что и mysqld, нужно подправить DATADIR в этом скрипте. 2.2. Дополнительные командыcomp_errГенерирует файлы сообщений об ошибках на национальном языке. СИНТАКСИС: comp_err [-?] [-I] [-V] fromfile[s] tofile ОПИСАНИЕ: Эта программа используется для компиляции текстовых файлов которые содержат соответствие между кодами ошибок mysql и текстовыми сообщениями об этих ошибках в формат, который понимает mysql. Это нужно для изменения уже существующего файла сообщений или генерации такого файла для другого языка. ПРИМЕР: comp_err share/english/errmsg.txt share/english/errmsg.sys msql2mysqlВыполняет начальное преобразование mSQL скрипта в MySQL. СИНТАКСИС: msql2mysql [filename] ОПИСАНИЕ: Скрипт msql2mysql используется как первый шаг при портировании msql скриптов в MySQL. Программа msql2mysql - фактически довольно простой скрипт, который использует команду replace, которая поставляется с СУБД MySQL, чтобы заменить mSQL обращения к функции на их MySQL эквиваленты. Меняются только имена, дополнительные параметры не добавляются. mysqlbugГенерирует отчет об ошибках. СИНТАКСИС: mysqlbug [address] ОПИСАНИЕ: Этот скрипт используется при сообщении об ошибках в MySQL. Он генерирует форму, которую для заполнения помещает в любой текстовый редактор, указанный в переменной $VISUAL (Vi по умолчанию). Форма будет содержать автоматически сгенерированную информацию относительно вашей системы, включая версии OS и MySQL и архитектуру. При окончании, форма будет отправлена по почте в список рассылки MySQL. perrorВыводит короткое текстовое объяснение числового кода ошибки. СИНТАКСИС: $ perror [-?vIV] [errorcodes]ОПИСАНИЕ: Программа perror предоставляет короткие текстовые объяснения числовых кодов ошибок, возвращаемых системой или СУБД MySQL. Программа perror поддерживает опции:
replaceСИНТАКСИС: replace [-?svIV] from to from to ... -- [files] ОПИСАНИЕ: Программа program используется скриптом msql2mysql. Replace может быть использована для замены строки на месте в файле или получать строку через канал (пайп), производить замену и выводить результат в STDOUT. Допустимы следующие опции:
ПРИМЕРЫ: replace Apple Orange somefile Заменит все вхождения Apple на Orange в файле somefile. cat INFILE | replace Apple Orange Blimp Train > OUTFILE Все вхождения Apple в файле INFILE будут заменены на Orange и результат выведен в файл OUTFILE. В то же время, все вхождения Blimp в файле INFILE будут заменены на Train и тоже выведены в файл OUTFILE. Таким образом, можно заменять более чем одно выражение за один проход. Можно использовать специальные символы во входных строках:
Replace простая и очень полезная утилита с большими потенциальными возможностями использования в MySQL. which1Найти команду. СИНТАКСИС: which1 [cmd] ОПИСАНИЕ: Эта команда, вероятно, полезна только на системах, которые не имеют, команды which, встроенной в оболочку, или доступной как команда. Выводит только первую найденную команду. zapПослать сигнал процессу, который соответствует образцу. СИНТАКСИС: zap [-signal] [-?Ift] pattern ОПИСАНИЕ: По умолчанию zap запросит подтверждение для каждого подходящего процесса. Программа zap поддерживает опции:
В качестве сигнала допускается любой сигнал системы unix. По умолчанию сигнал = 9 (завершить процесс). 3. Настройка mysqld (серверная часть пакета MySQL)При указании опции -O, отдельно (без дополнительных параметров) можно получить список всех переменных и их текущих значений. Это может выглядеть примерно так: $ mysqld -OВозможные переменные в опции -O:
Полезные замечания· Все потоки совместно используют ту же самую основную память. · MySQL в настоящее время не использует memmap. Это может изменяться. · Можно определять размер буфера для ключей при старте mysqld. Буфер ключей будет кэшировать все ключи во всех таблицах В ПОРЯДКЕ ПОСТУПЛЕНИЯ запросов (переменная keybuffer) · Каждое подключение использует некоторую часть потока, стек и буфер подключений (переменная net_buffer_length). · Каждый запрос, делающий последовательный просмотр записей в таблице, распределяет буфер чтений (переменная recordbuffer). · Каждый запрос, выполняющий сортировку, распределяет sortbuffer и один или два временных файла. Максимально необходимое дисковое пространство = (sort_key_length + sizeof(long))*2. · Все объединения выполняются за один проход, и результат сохраняется во временной таблице в памяти. Выполнение полного объединения и сортировки на двух больших таблицах может потребовать очень большого объема памяти. · Индексные файлы открываются один раз. Файлы данных открываются один раз для каждого параллельного потока. Каждый параллельный поток имеет полную таблицу struct и поле struct плюс память для трех полных строк столбцов. BLOB требует еще 5-8 байт. · Если таблица имеет BLOB, буфер будет распределен, чтобы читать данные BLOB. Этот буфер будет расти по мере необходимости, до размеров самого большого BLOB в таблице. · Когда таблица используется, она сохраняется в кэше. Этот кэш будет загружен и опорожнен В ПОРЯДКЕ ПОСТУПЛЕНИЯ запросов (FIFO). По умолчанию mysqld будет кэшировать 64 таблицы. Если много потоков обращаются к одной и той же таблице одновременно, будет иметься одна запись на поток. ТО ЕСТЬ, если два потока одновременно обращаются к той же самой таблице, будет две записи в кэше. · Команда mysqladmin reload закрывает все таблицы, которые не используются, и отмечает все используемые таблицы, которые будут закрыты, когда работающие потоки завершатся. Это позволяет эффективно использовать память, своевременно ее освобождая. 4. Возможности языка Perl для работы с MySQL сервером. При написании программы к данной работе выбран язык Perl, т. к. сегодня MySQL более широкое распространение получил на Web-серверах. А Perl как нельзя лучше других языков подходит для написания CGI-приложений. Взаимодействие сценария на языке Perl с MySQL можно изобразить схемой: Сценарий Perl–>DBI –>DBD::MySQL–>Cервер MySQL. DBI обеспечивает единый интерфейс взаимодействия с различными системами управления базами данных. А DBD связывает этот интерфейс непосредственно с конкретной СУБД. В нашем случае это mysql. Для того, чтобы программа на Perl могла общаться и работать с базой данных, необходимо подключить модуль 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 определяются имя пользователя, пароль и флаги соединения. Существует два способа работы с базами данных MySQL. Первый — так называемый механизм курсоров, а второй, соответственно, без использования таковых. Курсоры — это объекты Perl, которые обеспечивают последовательный доступ к результатам запросов. Каждый курсор отвечает за закрепленный за ним запрос. $cur = $dbh->prepare('select * from MAIN;'); $cur — это курсор, который для начала следует выполнить, используя метод execute: $cur->execute; Теперь, после выполнения запроса, чтобы получить результат запроса, используется метод fetchrow_array. Он поочередно возвращает массив полей результативной виртуальной таблицы. Очень часто бывает необходимо подготовить запрос и после, при его выполнении, передавать ему различные данные. Это довольно просто решается при помощи механизма 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 и пр.) Для того чтобы разорвать соединение с MySQL, необходимо выполнить метод disconnect. $dbh->disconnect; Заключение.
В процессе написания данной работы были выяснены следующие свойства MySQL сервера: · Многопоточность. Поддержка нескольких одновременных запросов. · Оптимизация связей с присоединением многих данных за один проход. · Записи фиксированной и переменной длины. · Гибкая система привилегий и паролей. · До 16 ключей в таблице. Каждый ключ может иметь до 15 полей. · Поддержка ключевых полей и специальных полей в операторе CREATE. · Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени. · Интерфейс с языками C и perl. · Основанная на потоках, быстрая система памяти. · Утилита проверки и ремонта таблицы (isamchk). · Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках. · Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице. · Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей. · Легкость управления таблицей, включая добавление и удаление ключей и полей. Итак, популярность MySQL сервера определяется не только тем, что пакет распространяется бесплатно и имеет высокую производительность, но ещё и тем, что имеет множество вышеперечисленных достоинств, многих из которых нет у других СУБД. И виртуальный магазин, и сервер знакомств, и всевозможные сайты, предоставляющие платные услуги, — все нуждаются в возможности обрабатывать и хранить большие объемы информации. MySQL предоставляет всем эту возможность совершенно бесплатно. Это действительно одна из самых мощных, быстрых и надежных СУБД. В ходе выполнения курсовой работы была написана программа, которая представляет собой Интернет-каталог. Она иллюстрирует возможности MySQL сервера, возможности интеграции MySQL c сетью Internet, что на сегодня весьма актуально. Созданная программа может использоваться в качестве Интернет-каталога в Интернет-магазине. Список литературы1. М. Каба. MySQL и Perl – СПб.: Питер, 2001. 2. А. Паутов. Документация по MySQL.3. М. Грубер. Понимание SQL. 4. Материалы интернет-сайтов: www.mysql.com www.infocity.kiev.ua |