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

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


 * - Gives the all privilege control for the database
 * - Allows users to create tables
 * - Allows users to query tables
 * - Allows users to insert data into a table
 * - Allows users to see a list of databases
 * - User has no privileges
 * - Allows users to grant privileges

For our admin user, ALL will do. For the guest user,  will be sufficient for read only access. database is the database we wish the user to have these permissions on. In this example, gentoo is the database. The .* means all tables. If you wanted to, you could apply per table access. user is the name of the user and host is the hostname the user will be accessing from. In most cases, this will be localhost. Finally, password is the user's password. Given the information, let's go ahead and create our users.

Now that we have the users setup, let's test them out. First we quit mysql by typing  at the command prompt:

We're now back at the console. Now that we have our users setup, let's go ahead and see what they can do.

Testing User Permissions
We shall now attempt to login as the guest user. Currently, the guest user has  only privileges. This basically comes down to being able to search and nothing more. Go ahead and login with the guest account.

Now we should test the user restriction(s). Let's switch to the gentoo database:

Now let's try to do something we are not supposed to. We'll attempt to create a table.

As you can see, this function fails, as our user does not have the appropriate access. However, one access we did grant is the  statement. Let's go ahead and try that:

The command succeeds, and we're given a glimpse of what user permissions can do. We did, however, create an admin account as well. This was created to show that even all permissions granted users can still have limitations. Go ahead and quit MySQL and login as the admin.

To begin, we'll try creating a new database with our admin user. This admin user will have access similiar to the root MySQL account, and will be able to do any kind of modification to the gentoo database it chooses. This will test the user's access to the main MySQL database. Remember ealier that we only set permissions to a specific database.

Indeed, the admin user cannot create databases on the main MySQL database, despite all his permissions on the gentoo database. However, we're still able to use the admin account to modify the gentoo database, as shown here by this example data insertion.

The admin user can access the database as they please. Now sometimes, we need to get rid of user permissions. This could be anything from a problematic user to a retired employee. Let's take a look at how to disable user permissions with the  command.

Removing User Access With The REVOKE Command
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