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 Syntax

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

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

~/records.txt

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

Синтаксис LOAD DATA

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

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

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

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

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

SELECT forms

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

Мы видим, что присутствуют как данные, которые мы добавили с, так и вставленные. Теперь, давайте предположим что мы просто хотим посмотреть запись для 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
The  command lets us deny access to a user. We can either deny full access, or specific access. In fact, the format is very similiar to.

REVOKE Syntax

Options here are explained in the  command section. In this section however, we're going to deny full access to a user. Let's say we find out the guest account is causing some problems security wise. We decide to revoke all privileges. We login as root and do the needful.

Now let's quit and attempt to login as a guest user.

Although we're able to login, our access to gentoo is now gone.

And our problematic user is no longer able to access the gentoo database. Please note that the user was still able to login. That is because they remain in the main MySQL database. Let's take a look at how to completely remove an account with  and the MySQL user table.

Removing Accounts Using DELETE
The MySQL user table is a listing of all users and information about them. Make sure you're logged in as root. Then go ahead and use the main MySQL database.

Now let's see what tables the mysql database has:

The user table is the table we're after. However, the user table contains 30 different fields, making it very hard to read. In order to make things easier to read, we'll go ahead and use the third version of the  statement. The fields we're after are Host and User.

Now that we have our information, we can get rid of the guest user. This is done with the  command and the syntax is shown below.

DELETE Syntax

You may notice that  is somewhat similiar to the   statement in its format. In this case, the field will be User, and the value guest. This will delete the record in the user table where the user is guest, successfully deleting our guest user account. Let's go ahead and do that:

It seems to have worked ok. Let's test by logging out and attempting to login as our guest user.

Our user is now successfully deleted!

Conclusion
While this guide focuses mainly on setting up MySQL on the command line, a few alternatives are available in GUI form:


 * phpMyAdmin - Popular php based MySQL administration tool.
 * mysqlnavigator - QT frontend to MySQL.
 * gmyclient - A GNOME based MySQL client.
 * knoda - A KDE MySQL client.

This ends the MySQL introductory tutorial. I hope this gives you a better understanding of the basics behind MySQL and getting a database set up.

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Chris White
 * Shyam Mani
 * Xavier Neys