MySQL/Startup Guide/ru

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

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

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

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

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

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

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

Если вы используете OpenRC, выполните данную команду:

Если вы используете systemd, вместо этого используйте следующую команду:

После этого установите пароль root:

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

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

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

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

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

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

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

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

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

table_name - это имя таблицы, которую мы хотим создать. В данном случае, давайте создадим таблицу с именем. Эта таблица будет хранить имя разработчика, email адрес и его должность.

field_name будет хранить имя поля. В этом случае мы имеем три требуемых имени: имя разработчика, email адрес, и должность.

field_data_type - это то, какой тип информации будет сохранен. Различные доступные форматы могут быть найдены по адресу MySQL Column Types Page. Для наших целей, мы будем использовать тип данных  для всех наших полей. - это один из простейших типов данных, когда дело касается работы со строками.

size - это то, как много данных будет хранить одно поле. В нашем случае, мы будем использовать 128. Это означает, что поле будет иметь данные типа, которые занимают 128 байт. В настоящий момент, Вы можете спокойно думать об этом как о 128 символах, хотя существует более техническое объяснение, которое Вам предоставит сайт, указанный выше. Теперь, когда мы знаем как мы создадим таблицу, давайте это сделаем.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наш пользователь успешно удален!

Заключение
В то время как это руководство сфокусировано, в основном, на настройке MySQL из командной строки, доступно несколько альтернатив с графическим интерфейсом:


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

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

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


 * Chris White
 * Shyam Mani
 * Xavier Neys