MySQL/Startup Guide/ru

Этот документ поможет пользователю в настройке и использовании MySQL.

Введение
MySQL - это популярный сервер баз данных, который используется в разных приложениях. SQL означает язык структурированных запросов - (S)tructured (Q)uery (L)anguage, который MySQL использует для коммуникации с другими программами. Сверх того, MySQL имеет свои собственные расширенные функции SQL для того чтобы обеспечить пользователям дополнительный функционал. В этом документе мы рассмотрим как провести первоначальную установку MySQL, настроить базы данных и таблицы, и создать новых пользователей. Давайте начнем с установки.

Установка MySQL
Сначала убедитесь что MySQL установлена на вашу систему. В случае если Вам требуется определенная функциональность MySQL, убедитесь, что установлены необходимые USE-флаги, так как они помогут в тонкой настройке Вашего процесса установки.

По завершении установки, Вы увидите следующее уведомление:

MySQL einfo message

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

Некоторая нехарактерная для ebuild-файлов информация MySQL удалена отсюда, чтобы содержать этот документ настолько последовательным, насколько возможно.

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

Теперь Вы можете проверить, что пароль root был успешно настроен, попытавшись войти на MySQL-сервер:

Параметр  указывает пользователя, который будет выполнять вход. Параметр  указывает хост. Обычно это будет, если только Вы не настраиваете удаленный сервер. И, наконец,  сообщает клиенту mysql что Вы будете вводить пароль для доступа к базе данных. Обратите внимание на командную строку. Это то место, где Вы будете вводить все Ваши команды. Теперь, когда мы в командной строке mysql в качестве пользователя root, мы можем начать настраивать нашу базу данных.

Создание Базы Данных
Мы вошли и командная строка mysql показана на экране. Сначала, давайте рассмотрим базы данных, которые у нас имеются в настоящий момент. Чтобы это сделать, мы используем команду.

Вопреки тому факту, что тестовая база данных уже создана, мы собираемся создать нашу собственную. Базы данных создаются с использованием команды. Мы создадим одну из них под названием gentoo.

Ответ позволяет нам узнать, что команда была выполнена без ошибок. В этом случае, одна строка была изменена. Это является отсылкой к основной базе данных mysql, которая содержит список всех баз данных. Вам не нужно сильно беспокоиться о второстепенных деталях. Последнее число является характеристикой того, насколько быстро был выполнен запрос. Мы можем проверить, что база данных была создана, запустив команду  снова.

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

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

Создание Таблицы
В структуру MySQL входят базы данных, таблицы, записи, и поля. Базы данных объединяют таблицы, таблицы объединяют записи, записи объединяют поля, которые содержат действительную информацию. Такая структура позволяет пользователям выбирать как они хотят обращаться к своей информации. На данный момент, мы разобрались с базами данных, теперь давайте поработаем с таблицами. Во-первых, таблицы могут быть перечислены, подобно базам данных, с использованием команды. Сейчас, в базе данных gentoo не имеется таблиц, как и показывает нам следующая команда:

Это означает нам надо создать какие-либо таблицы. Чтобы это сделать, мы используем команду. Однако, эта команда достаточно отличается от простой команды  тем что принимает список аргументов. Формат команды следует ниже:

CREATE TABLE Syntax

table_name - это имя таблицы, которую мы хотим создать. В данном случае, давайте создадим таблицу с именем. Эта таблица будет хранить имя разработчика, email адрес и его должность. field_name будет хранить имя поля. В этом случае мы имеем три требуемых имени: имя разработчика, email адрес, и должность. field_data_type - это то, какой тип информации будет сохранен. Различные доступные форматы могут быть найдены по адресу MySQL Column Types Page. Для наших целей, мы будем использовать тип данных  для всех наших полей. - это один из простейших типов данных, когда дело касается работы со строками. size - это то, как много данных будет хранить одно поле. В нашем случае, мы будем использовать 128. Это означает, что поле будет иметь данные типа, которые занимают 128 байт. В настоящий момент, Вы можете спокойно думать об этом как о 128 символах, хотя существует более техническое объяснение, которое Вам предоставит сайт, указанный выше. Теперь, когда мы знаем как мы создадим таблицу, давайте это сделаем.

Похоже, наша таблица была успешно создана. Давайте проверим это командой :

Да, наша таблица существует. Однако, она, по-видимому, не имеет никакой информации о типах полей, которые мы создали. Для этого, мы используем команду  (или, кратко,  ), которая принимает имя таблицы в качестве своих аргументов. Давайте посмотрим что она нам даст для нашей таблицы developers.

Показаны разные поля и их типы. Также показано несколько дополнительных атрибутов, которые находятся за рамками данного руководства. Пожалуйста, обратитесь за подробностями к Справочному Руководству MySQL. Теперь у нас есть таблица для работы с ней. Давайте продолжим и заполним ее.

Заполнение Базы Данных MySQL
Мы заполним таблицу (или добавим в нее данные), используя команду. Подобно команде, она также имеет особый формат:

Синтаксис INSERT

Эта команда используется для вставки записи в таблицу. table содержит таблицу MySQL, в которую мы хотим ввести информацию. Имя таблицы может сопровождаться списком столбцов для вставки данных,  хранит значения, которые Вы хотите вставить в таблицу. Вы можете опустить список столбцов, если Вы вставляете значение в каждый из них и если Вы пишете значения в том же порядке, в котором определены столбцы. В данном случае, мы хотим вставить данные в таблицу developers. Давайте добавим примеры записей:

В соответствии с полученным результатом, кажется, запись была вставлена правильно. Что если мы хотим ввести больше, чем просто одну запись? Это тот случай, когда команда  вступает в действие. Она загружает записи из файла, разделенного символами табуляции. Давайте это попробуем, отредактировав файл в домашнем каталоге пользователя и добавив в него записи. Мы назовем этот файл. Здесь приведен пример:

~/records.txt

Команда  имеет в каком-то смысле пространное определение, но здесь мы используем ее самую простую форму.

Синтаксис LOAD DATA

- это каталог и имя файла, которые будут использоваться. table - это имя нашей таблицы. В этом случае, наш файл -, а имя таблицы - developers.

Сработало хорошо. Однако, это просто вставляет записи, и не дает Вам какого-либо контроля над MySQL. Множество веб-приложений используют сценарии sql для того чтобы настроить MySQL быстро и легко. Если Вы хотите использовать сценарий sql, Вам нужно запустить mysql в пакетном режиме, или использовать файл в качестве источника команд. Здесь приведен пример запуска mysql в пакетном режиме:

Как и в случае с, убедитесь, что Вы можете сказать что делает файл. Невозможность этого может скомпрометировать Вашу базу данных! Другим способом выполнения этого является использование команды. Эта команда запустит команды из файла sql, находясь в интерактивном режиме mysql. Здесь показано как использовать sql file в качестве источника команд:

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

Запросы к Таблицам MySQL
Запросы являются одной из основных функций любой базы данных SQL. Они помогают превратить данные в таблицах во что-то полезное. Большинство запросов выполняются командой. Команда  - довольно сложна, и мы рассмотрим только три основных формы этой команды в данном документе.

Виды команды SELECT

Давайте-ка быстро рассмотрим первую форму команды. Она относительно проста и дает общий вид Вашей таблицы. Мы продолжим и запустим ее, чтобы посмотреть какие данные у нас есть в настоящий момент.

Мы видим, что присутствуют как данные, которые мы добавили с, так и вставленные. Теперь, давайте предположим что мы просто хотим посмотреть запись для Chris White. Мы можем сделать это с помощью второй формы команды select, как показано ниже.

Как предполагалось, выбрана отдельная запись, которую мы искали. Теперь, предположим мы только хотели узнать должность и email адрес данной персоны, но не ее имя. Мы можем это выполнить с помощью третьей формы  как здесь и показано.

Этот способ выбора намного более легок в управлении, особенно с большими количествами информации, как мы увидим позже. А сейчас, будучи mysql пользователем root, мы обладаем неограниченными разрешениями делать то, что мы хотим с базой данных MySQL. В среде выполнения сервера, наличие пользователя с такими привилегиями может вызвать немало проблем. Для того, чтобы контролировать кто что может делать с базами данных, мы настроим привилегии.

Предоставление Привилегий Командой GRANT
Привилегии - это то, каким доступом обладают пользователи к базам данных, таблицам, да и вообще, к чему угодно. На данный момент в базе данных gentoo, учетная запись MySQL root - это единственная учетная запись, которая может получить к ней доступ, учитывая ее разрешения. Теперь, давайте создадим двух, в каком-то смысле, общих пользователей, гостя и администратора, которые получат доступ к базе данных gentoo и будут работать с информацией, хранящейся в ней. Учетная запись гостя будет ограниченной. Все, что он сможет сделать, это получить информацию из базы данных, и только это. Администратор будет иметь то же самое управление, что и root, но только для базы данных gentoo (а не основных баз данных mysql). Перед тем как мы начнем, давайте рассмотрим подробнее этот, в некотором смысле, упрощенный формат команды.

Синтаксис команды GRANT

Во-первых, мы имеем привилегии, которые мы хотим назначить. Исходя из того что мы выучили на данный момент, имеются несколько привилегий, которые Вы можете установить:


 * - Дает полный контроль базы данных со всеми привилегиями
 * - Позволяет пользователям создавать таблицы
 * - Позволяет пользователям делать запросы к таблицам
 * - Позволяет пользователям вставлять данные в таблицу
 * - Позволяет пользователям просматривать список баз данных
 * - Пользователь не имеет привилегий
 * - Позволяет пользователям предоставлять привилегии

Для администратора, уровня ALL будет достаточно. Для пользователя 'гость',  будет достаточно для доступа только на чтение. database - это база данных, над которой пользователь, как мы хотим, должен иметь эти разрешения. В этом примере, базой данных является gentoo. .* означает все таблицы. Если бы Вы хотели, Вы могли бы применить доступ на уровне каждой из таблиц. user - это имя пользователя, а host - имя хоста, с которого пользователь будет получать доступ. В большинстве случаев, это будет localhost. И наконец, password - это пароль пользователя. Учитывая эту информацию, давайте продолжим и создадим наших пользователей.

Теперь, когда мы настроили наших пользователей, давайте их протестируем. Сначала, мы завершим mysql, введя  в командной строке:

Теперь мы снова в консоли. Сейчас, когда пользователи созданы и настроены, давайте продолжим и посмотрим что они могут делать.

Тестирование Пользовательских Разрешений
Сейчас мы должны попытаться войти в качестве пользователя guest. В настоящий момент, пользователь guest имеет только привилегии. Это, просто-напросто, сводится к способности поиска в базе данных, и ничего больше. Продолжайте и войдите с учетной записью guest.

Теперь мы должны протестировать пользовательские ограничения. Давайте переключимся к базе данных gentoo:

Давайте попробуем сделать что-нибудь, что мы, как предполагается, не должны. Мы попытаемся создать таблицу.

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

Команда завершилась успешно, и мы мельком увидели, что могут делать пользовательские разрешения. Мы, однако же, также создали и учетную запись администратора. Она была создана для того чтобы показать, что даже все разрешения, предоставленные пользователям, могут все же иметь ограничения. Продолжайте и завершите работу MySQL и войдите под учетной записью admin.

Для начала, мы попытаемся создать новую базу данных от пользователя admin. Этот пользователь admin будет иметь доступ схожий с учетной записью MySQL root, и будет способен выполнить любой вид изменений базы данных gentoo, какой он выберет. Это протестирует доступ пользователя к основной базе данных MySQL. Вспомните, что ранее мы установили разрешения только к определенной базе данных.

В самом деле, пользователь admin не может создавать базы данных в основной базе данных MySQL, вопреки всем своим разрешениям к базе данных gentoo. Однако, мы все еще способны использовать учетную запись admin для изменений базы данных gentoo, как показано здесь на этом примере вставки данных.

Пользователь admin может получить доступ к базе данных по желанию. Иногда, мы должны избавиться от пользовательских разрешений. Примером может быть все что угодно, от пользователя, вызывающего проблемы, до уволенного сотрудника. Давайте рассмотрим как отключить пользовательские разрешения командой.

Удаление Прав Доступа Пользователя Командой REVOKE
Команда  позволяет нам запретить доступ пользователю. Мы можем запретить или все права на доступ, или определенные права. В действительности, формат весьма схож с командой.

Синтаксис REVOKE

Здесь, параметры объясняются в разделе команды. Однако же, в этом разделе, мы собираемся запретить пользователю доступ полностью. Давайте предположим, мы обнаружили, что учетная запись guest вызывает некоторые проблемы с безопасностью. Мы решаем отозвать все привилегии. Мы заходим под учетной записью root и делаем то, что необходимо.

Давайте теперь выйдем и попытаемся зайти в качестве пользователя guest.

Хотя мы и были способны выполнить вход, наши права доступа к gentoo теперь исчезли.

И наш проблемный пользователь больше не может получить доступ к базе данных gentoo. Пожалуйста, заметьте, что пользователь все еще может выполнить вход. Это потому что он остается в основной базе данных MySQL. Давайте рассмотрим как полностью удалить учетную запись командой  из таблицы пользователей MySQL.

Удаление Учетных Записей с Использованием DELETE
Таблица пользователей MySQL является перечислением всех пользователей и информации о них. Убедитесь, что вы выполнили вход под root. Затем продолжайте и используйте основную базу данных MySQL.

Давайте теперь посмотрим какие таблицы имеются в базе данных mysql:

Таблица user - это та таблица, которая нам нужна. Однако, таблица user содержит 30 разных полей, что делает очень сложным ее чтение. Для того чтобы сделать чтение проще, мы продолжим и используем третью версию выражения. Host и User - это те поля, которые нам нужны.

Теперь, когда мы получили нужную нам информацию, мы можем избавиться от пользователя guest. Это делается командой, ее синтаксис показан ниже.

Синтаксис DELETE

Вы могли заметить, что  в чем то похожа на выражение   в своем формате. В этом случае, полями будут User, а значением guest. Это удалит ту запись в таблице user, где user совпадает с guest, успешно удаляя наш пользовательский аккаунт guest. Давайте продолжим и выполним это:

Кажется, сработало на отлично. Давайте это протестируем, выйдя и попытаясь войти в качестве пользователя guest.

Теперь, наш пользователь успешно удален!

Выводы
В то время как это руководство сфокусировано, в основном, на настройке MySQL в командной строке, доступно несколько альтернатив в виде GUI:


 * phpMyAdmin - Популярный инструмент администрирования MySQL, основанный на php.
 * mysqlnavigator - Интерфейс QT к MySQL.
 * gmyclient - MySQL клиент, основанный на GNOME.
 * knoda - KDE клиент к MySQL.

Это завершает вводное руководство к MySQL. Я надеюсь это дало Вам лучшее понимание основ MySQL и настройки базы данных.

Благодарности
Мы хотели бы поблагодарить следующих авторов и редакторов за их вклад в это руководство:


 * Chris White
 * Shyam Mani
 * Xavier Neys