База данных MySQL
Министерство образования и науки
ГОУ СПО
«Самарский техникум космического машиностроения»
Реферат
по дисциплине: «Разработка и эксплуатация удаленных баз данных»
на тему: «База данных MySQL»
Проверил преподаватель
Самара 2011
Введение.
На сегодняшний день СУБД 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, язык структурированных запросов) в качестве командного языка для создания/удаления баз данных, таблиц, для пополнения таблиц данными, для осуществления выборки данных.
- Общее описание, запуск и настройка прав доступа к
базам данных 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 |
user |
Список всех пользователей сервера MySQL с правами доступа ко всей базе данных в целом |
2 |
db |
Список баз данных с сопоставленными им пользователями и их привилегиями на выполнение операции |
3 |
host |
Список компьютеров, с которых возможен доступ к сопоставленной компьютеру базе данных, и привилегии на выполнение операций, которые могут проводиться через соединение с этого компьютера |
4 |
tables_priv |
Список таблиц баз данных, к которым возможен доступ пользователя |
5 |
columns_priv |
Список столбцов базы данных, к которым возможен доступ пользователя |
Проверка прав доступа производится в порядке, указанном в таблице 1.1. Прежде всего проверяется, существует ли пользователь и какие возможности он имеет при управлении базой данных (таблица1.2.).
Таблица 1.2. Поля таблицы user
Название поля |
Тип |
Значение по умолчанию |
Описание |
1 |
2 |
3 |
4 |
Host |
Char(60) |
Компьютер пользователя, с которого разрешено подключение | |
User |
Char(16) |
Имя пользователя | |
Password |
Char(16) |
Пароль пользователя | |
Select_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на выборку данных оператором SELECT |
Insert_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на вставку данных оператором INSERT |
Update_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на изменение данных оператором UPDATE |
Delete_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на удаление данных оператором DELETE |
Reload_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на перезапуск сервера MySQL, а также сброс данных из памяти на диск |
1 |
2 |
3 |
4 |
Shutdown_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на отключение сервера MySQL |
Process_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на просмотр состояния текущих процессов сервера |
File_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, необходимые для работы с файловой системой, например оператором LOAD DATA INFILE |
Grant_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, позволяющие пользователю устанавливать привилегии другим пользователям |
References_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, позволяющие ссылаться на объект |
Index_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, необходимые для индексирования данных |
Alter_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, позволяющие обновлять данные |
Поля с типом Enum ( ‘N’, ‘Y’ ) считаются разрешенными, если установлено значение Y, и неразрешенными, если установлено значение N.
Для администратора сервера MуSQL необходимы все привилегии, для обычных пользователей в данной таблице обычно не разрешена ни одна из привилегии, т. е. Обычные пользователи не могут изменять конфигурацию сервера MySQL. Исключением можно считать привилегии File_priv, если пользователь активно работает с файловой системой.
Поле host может быть описано как IP-адрес или имя, а также может быть пустым. В имени компьютера и в имени пользователя разрешается применение регулярных выражений.
Пароли хранятся в зашифрованном виде и не имеют функции обратной дешифровки. Для того чтобы задать пароль, необходимо использовать функцию password ().
Если привилегии на просмотр процессов сервера не разрешены, тогда пользователь может видеть только собственные процессы.
На этапе проверки значений таблицы user пропускаются для дальнейшей обработки только те соединения, у которых поля Host, User и значения функции password () от значения пароля, полученного от клиента, совпадают.
Дальнейшая обработка
Таблица 1.3. Привилегии для работы с базой данных
Название поля |
Тип |
Значение по умолчанию |
Описание |
Host |
Адрес компьютера пользователя, с которого разрешено подключение | ||
Db |
Имя базы данных | ||
User |
Имя пользователя | ||
Select_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на выборку данных оператором SELECT |
Insert_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на вставку данных оператором INSERT |
Update_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии изменения данных оператором UPDATE |
Delete_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии на удаление данных DELETE |
Create_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, необходимые для создани таблиц оператором CREATE TABLE |
Drop_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, необходимые для удаления таблиц оператором DROP TABLE |
Grant_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, позволяющие пользователю устанавливать привилегии другим пользователям |
References_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, позволяющие ссылаться на объект |
Index_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, необходимые для индексирования данных |
Alter_priv |
Enum(‘N’, ‘Y’) |
N |
Привилегии, позволяющие обновлять данные |
Привилегии, указанные в таблице 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 поддерживаются следующие опции. Можно использовать или "короткий" одиночный символ или более подробную версию.
-\?, --help |
Справка. |
-d, --debug=[options] |
Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. |
-d, --debug-info |
Вывести отладочную информацию при выходе из программы. |
-e, --exec |
Выполнить команду и выйти, неявная форма опции --batch. |
-f, --force |
Продолжить, даже если есть SQL ошибка. |
-h, --hostname=[hostname] |
Задает имя сервера, с которым необходимо соединиться. |
-P, --port=[port] |
Порт, для соединения с сервером MySQL. |
-p, --password=[password] |
Пароль пользователя, для соединения с сервером MySQL. Не должно быть пробела между -p и паролем. |
-q, --quick |
Быстрый (небуферизованный вывод), может замедлить сервер, если вывод приостановлен. |
-s, --silent |
Работать молча (подавить вывод). |
-u, --user=[user] |
Имя пользователя для соединения с сервером MySQL. Необязательно, если имя пользователя такое же, как логин. По умолчанию логин используется в качестве имени пользователя. |
-v, --verbose |
Подробный вывод. -v опция может быть удвоена или утроена для более подробного вывода. |
-w, --wait |
Если подключение терпит неудачу, то подождать и повторить попытку. |
-B, --batch |
Выполнить в пакетном режиме. Никаких запросов и никаких ошибок в STDOUT. Устанавливается автоматически при чтении из/записи в канал. Результаты будут выведены в формате с разделением табуляцией. Одна строка результата соответствует одной строке вывода. |
-I, --help |
Справка, эквивалент -\?. |
-V, --version |
Вывести информацию о версии пакета. |
mysqlaccess
Проверка прав доступа пользователя.
СИНТАКСИС:
mysqlaccess [host] [user] [db] OPTIONS
ОПИСАНИЕ:
Скрипт mysqlaccess используется, чтобы внести в список привилегии пользователя для конкретной базы данных. Это дает информацию, которая может быть полезна при диагностировании проблем с доступом пользователей к данной базе данных.
Скрипт mysqlaccess поддерживает следующие параметры (можно использовать "короткий" одиночный символ или более подробную версию):
-?, --help |
Справка. |
-v, --version |
Информация о версии |
-u, --user=... |
Имя пользователя для доступа к базе данных. |
-p, --password=... |
Пароль пользователя, для соединения с сервером MySQL. |
-h, --host=... |
Имя сервера, используется для проверки прав доступа. |
-d, --db=... |
Имя базы данных, используется для проверки прав доступа. |
-U, --superuser=... |
Логин администратора. |
-P, --spassword=... |
Пароль администратора. |
-b, --brief |
Вывести краткие сведения о таблице. |
--relnotes |
Вывести заметки по реализации. |
--plan |
Вывести идеи для будущих реализаций. |
--howto |
Вывести примеры использования `mysqlaccess' |
--debug=N |
Уровень отладки N (0..3) |
Необходимо указать по крайней мере имя пользователя и имя базы данных, которые нужно проверить. Если имя сервера не задано, то подразумевается имя 'localhost'.
mysqladmin
Выполняет административные функции.
СИНТАКСИС:
mysqladmin [OPTIONS] command command...
ОПИСАНИЕ:
Программа mysqladmin используется, для управления различными аспектами функционирования СУБД MySQL. Допустимы следующие опции (можно использовать "короткий" одиночный символ или более подробную версию):
-\?, --help |
Справка. |
-d, --debug=[options] |
Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. |
-f, --force |
Не спрашивать подтверждения при пропуске таблицы. |
-h, --host=[hostname] |
Имя сервера, если не localhost. |
-i, --sleep=[seconds] |
Выполнить команды несколько раз с паузой в [секунд] между ними. |
-p, --password[password] |
Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем. |
-u, --user=[user] |
Имя пользователя. Если не указано, используется текущий логин. |
-P, --port=[port] |
Порт, для соединения с сервером MySQL. |
-V, --version |
Вывести информацию о версии. |
Кроме этого программа mysqladmin поддерживает
следующие команды:
create [имя базы данных] |
Создать базу данных. |
drop [имя базы данных] |
Удалить базу данных (вместе со всеми таблицами). |
processlist |
Вывести сведения о работающих потоках MySQL. |
reload |
Перечитать настройки и |
shutdown |
Завершить работу СУБД MySQL. Все запущенные MySQL-сессии помечаются как 'killed'. Это означает, что все потоки, которые простаивают в настоящее время, будут закрыты немедленно, а управление потоками будет закрыто, когда они достигнут точек завершения, определенных сервером. Клиенты получат сообщение об ошибке 'mysql server has gone away'. |
status |
Вывести короткое сообщение о статусе сервера. |
mysqld
Серверная часть пакета MySQL (mysqld).
СИНТАКСИС:
mysqld [OPTIONS]
ОПИСАНИЕ:
Программа mysqld является ядром СУБД MySQL. Она запускается как демон в системе и принимает подключения из клиентских программ, выполняя запросы и возвращая результаты. Она многопоточная, то есть обработает больше чем один запрос одновременно.
Может наблюдаться спад производительности при использовании опции --log-isam, поскольку при этом очень многое пишется в файл протокола. Непериодические изменения, обновления и удаления могут уменьшить производительность на 5-10%. Производительность может сильно понизиться на обновлениях, требующих большого числа одновременных изменений.
Опция --log-isam может использоваться, для копирования базы данных. ISAM журналы могут стать ОЧЕНЬ большими.
Каждая операция UPDATE, DELETE и INSERT имеет заголовок в 13 байтов дополнительно к команде.
Каждая открытая таблица требует девять байтов плюс длина имени файла таблицы. Это необходимо только для таблиц, которые еще не в кэше таблиц.
Кроме того будут иметься одиннадцать байтов дополнительно для любых команд, которые кэшируют/блокируют таблицы. Эти события обычно вызваны внутренними командами mysql. Наиболее часто, когда используется SELECT.
В большинстве случаев нужно выполнять mysqld из скрипта safe_mysqld .
Программа mysqld поддерживает следующие опции командной строки:
-\?, --help |
Справка |
-#, --debug=[options] |
Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. |
-b, --basedir=[path] |
Полное имя каталога в который установлен пакет. |
-h, --datadir [homedir] |
Полное имя каталога в котором хранятся базы данных. |
-l, --log=[filename] |
Имя файла протокола запросов к базам данных и подключений. |
--log-isam=[filename] |
Имя файла протокола изменений isam. |
-O, --set-variable var=option |
Установить переменную. См. ниже. |
-L, --language=[language] |
Значение по умолчанию 'english/'. Может быть так же 'swedish/', 'germany/','french/' или 'czech/'. Текущий список можно посмотреть в подкаталог share/mysql каталога, в который установлен MySQL. |
-P, --port=[port] |
Порт для соединения. |
-T, --debug-info |
Вывести отладочную информацию. |
--skip-new-routines |
Не использовать новые возможности этой версии. |
--skip-grant-tables |
Игнорировать таблицы |
--skip-locking |
Не использовать блокировку системы. Может дать лучшую эффективность, но не должен использоваться вместе с isamchk. ТО ЕСТЬ, сначала остановите сервер. |
--skip-name-resolve |
Эта опция заставит mysqld принимать адреса IP только тех серверов, которые явно указаны в базе данных привилегий mysql. DNS можно более или менее просто хакнуть, а эта опция позволяет избежать ряда проблем, если прикладная программа требует высокого уровня защиты. |
--skip-networking |
Использовать подключения |
--skip-unsafe-select |
Пропустить возможно опасные оптимизации. |
--socket=[socket] |
Имя сокет-файла для MySQL. Недоступно при использовании версии MySQL, скомпилированной с MIT потоками. ПРИМЕР: |
-V, --version |
Вывести информацию о версии. |
Если опция -h не определена, mysql будет считать, что основной каталог = "/my/data/sql/mysql".
Все базы данных размещены в каталоге [homedir]/[имя базы данных] .
Опция -l должна использоваться осторожно. Когда используется сервер, с большим объемом транзакций, этот файл может стать большим очень быстро. Если не определяется имя logfile, при использовании опции -l mysqld будет писать протокол в файл [homedir]/[hostname].log.
Опция -O позволяет определять значения для следующих параметров:
Имя |
Значение по умолчанию |
back_log |
5 |
keybuffer |
1048568 |
max_allowed_packet |
65536 |
net_buffer_length |
8192 |
max_connections |
90 |
table_cache |
64 |
recordbuffer |
131072 |
sortbuffer |
2097144 |
max_sort_length |
1024 |
mysqldump
Дамп содержания базы данных.
СИНТАКСИС:
mysqldump [OPTIONS] [database [table [field]]]
ОПИСАНИЕ:
Программа mysqldump используется для создания дампа содержания базы данных MySQL. Она пишет инструкции SQL в стандартный вывод. Эти инструкции SQL могут быть переназначены в файл. Можно резервировать базу данных MySQL, используя mysqldump, но при этом Необходимо убедиться, что в этот момент с базой данных не выполняется никаких других действий.
Программа mysqldump поддерживает следующие параметры (можно использовать короткую или подробную версию):
-#, --debug=[options] |
Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. |
-?, --help |
Справка. |
-c, --compleat-insert |
Генерируйте полные инструкции insert (не исключая значений, которые соответствуют значениям столбца по умолчанию). |
-h, --host=[hostname] |
Соединиться с сервером hostname. |
-d, --no-data |
Экспорт только схемы информации (исключая данные). |
-t, --no-create-info |
Экспорт только данных, исключая информацию для создания таблицы. Противоположность -d. |
-p, --password=[password] |
Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем. |
-q, --quick |
Не буферизовать результаты запроса, дамп выдать непосредственно к STDOUT. |
-u, --user=[username] |
Имя пользователя. Если не задано, используется текущий логин. |
-v, --verbose |
Вывести подробную информацию относительно различных стадий выполнения mysqldump. |
-P, --port=[port] |
Порт для связи. |
-V, --version |
Информация о версии. |

- База Данных "Библиотека"
- База данных в Delphi
- База данных в Интернете
- База данных Гостиница
- База данных для работников регистратуры поликлиники
- База данных и системы управления базами данных,распределение обработки информации
- База данных книжного магазина
- База данных
- База Данных
- База данных (4)
- База данных (5)
- База данных (6)
- База Данных Access
- База данных Access. Особенности работы в многопользовательском режиме