-
Главная
-
Инструкции
-
MySQL
-
Как установить MySQL на Windows: пошаговая инструкция
MySQL — это бесплатная реляционная система управления базами данных, разработанная компанией Oracle. Популярность ей принесли доступность, простота и многофункциональность. Разработка множества функций выполнена не только разработчиками ПО, но и пользователями, благодаря исходному коду, который опубликован в свободном доступе.
В данной статье будет подробно рассказано, как установить MySQL на Windows и произвести ее базовую настройку. В инструкции будет рассмотрена установка программы на ОС Windows 10.
Чтобы установить MySQL на Windows 10, понадобится компьютер с установленной операционной системой.
Скачивание дистрибутива
Для начала необходимо установить дистрибутив программы MySQL с официального сайта разработчика. Пользователю будет предложено два варианта загрузки:
- Первый вариант — скачать загрузочный файл версии
mysql-installer-web-community.msi
. Он произведет автоматическую установку всех необходимых компонентов. Важно уточнить, что данный вариант установки предполагает обязательное наличие подключения сервера к интернету. - Второй вариант — скачать загрузочный файл версии
mysql-installer-community.msi
. Он позволит установить все компоненты СУБД даже при отсутствии интернет-соединения у сервера.
В данной инструкции будем использовать второй вариант загрузки.
После выбора варианта скачивания программы сервис предложит зарегистрировать веб-аккаунт Oracle либо войти под существующими данными. Этот этап можно пропустить. Для этого нужно нажать на соответствующую ссылку, как показано на картинке ниже.
Установка MySQL
После успешного скачивания загрузочного файла, его нужно будет запустить. Далее должна открыться программа установки.
В самом начале пользователю будут предложено несколько вариантов установки. Среди них:
- Developer Default — вариант по умолчанию. Он подразумевает установку всех необходимых компонентов для разработчика.
- Server only — установка только сервера СУБД.
- Client only — установка только клиентской части СУБД.
- Full — установка всех компонентов скачанного дистрибутива.
- Custom — установка с возможностью выбора только необходимых пользователю компонентов.
Выбираем полную установку («Full»). Для начинающих пользователей это будет лучший вариант. После выбора нажимаем кнопку «Next».
Теперь программа установки предложит пользователю установить все необходимые компоненты для работы расширений СУБД. Если у них есть статус Manual, то они никак не будут мешать программе стабильно выполнять задачи. Можно выбрать необходимые из списка компоненты, затем нажать кнопку «Execute» и установить их, либо пропустить данный шаг и нажать кнопку «Next». Если пользователь выбрал второй вариант, то ему будет выведено на экран уведомление об отсутствии некоторых компонентов. Нужно нажать «Yes», чтобы подтвердить свой выбор.
Следующим шагом будет последовательная установка всех компонентов СУБД. Для этого нажимаем кнопку «Execute».
Как только все файлы будут успешно загружены, слева от каждого компонента появится зеленая галочка, а статус поменяется на «Complete». Нажимаем «Next».
Далее установочная программа предложит настроить конфигурацию некоторых компонентов. Нажимаем «Next» и переходим к настройке.
Настройка конфигурации MySQL Server
MySQL Server уже установлен на Windows 10. В первую очередь нужно произвести настройку его конфигурации. В открывшемся окне уже будут выставлены все нужные параметры по умолчанию, поэтому нажимаем «Next».
После будет предложено выбрать тип аутентификации. Оставим рекомендованный и переходим к следующему этапу.
В открывшемся окне нужно задать пароль суперпользователя (root). Кроме того, на данном этапе можно добавить других пользователей. Для этого нужно нажать кнопку «Add User» и заполнить необходимые поля:
- Поле «User Name» — имя пользователя.
- Поле «Host”» — хост, с которого пользователь будет авторизовываться.
- Поле «Role» — роль пользователя для работы в СУБД.
- Поля «Password» и «Confirm Password» — пароль и подтверждение пароля для создаваемого пользователя.
Выполним все необходимые действия.
Нажимаем «OK» в окне создания пользователя. Он будет создан, а пароль суперпользователю задан. Нажимаем «Next».
Далее установщик предложит запускать MySQL Server как Windows-сервис. Если убрать в данном пункте галочку, то запускать его нужно будет из командной строки.
По усмотрению пользователя, предложенное имя Windows-сервиса можно оставить либо изменить на иное.
Следующий чекбокс отвечает за запуск службы и сервера одновременно.
Пункт Run Windows Service предлагает выбрать учетную запись, от которой будет запускаться служба.
Никаких изменений в предложенный установщиком вариант вносить не будем. Перейдем к следующему этапу.
Нужно применить измененные параметры конфигурации. Для этого нажимаем кнопку «Execute».
Как только все зеленые галочки рядом с пунктами будут выставлены — нажимаем «Finish».
Теперь статус конфигурации MySQL Server помечен как завершенный. Нажимаем кнопку «Next».
Настройка конфигурации MySQL Router
В открывшемся окне не будем вносить никаких изменений, а просто нажимаем «Finish». Все представленные настройки нужны для распределения нагрузки между программами MySQL в кластере.
Настройка завершена. Переходим к настройке Samples and Examples.
Настройка конфигурации Samples and Examples
В открывшемся экране нужно будет заполнить ранее заданные логин и пароль для пользователя root и нажать кнопку «Check» для проверки соединения.
Как видно по картинке, соединение успешно установлено. Нажимаем «Next» и применяем все параметры кнопкой «Execute». Начнется установка необходимых компонентов раздела Samples and Examples на сервер СУБД.
Как только установка будет завершена — нажимаем «Finish».
Установка СУБД завершена. Для её дальнейшей работы и настройки запустим MySQL Workbench. Для этого установим галочку в соответствующем чекбоксе и нажмем «Finish».
Проверка работоспособности MySQL
После завершения загрузки откроется установленный на Windows 10 MySQL Workbench. В стартовом окне программы содержится одно подключение от пользователя root. Кликаем на него и вводим пароль, заданный ранее.
После этого выполнится подключение к серверу и откроется рабочая область среды MySQL Workbench.
Теперь откроем вкладку «Schemas» в левой части рабочей области и развернем список таблиц в схеме «sakila». Здесь будут представлены тестовые данные, которые мы устанавливали ранее.
Попробуем сделать первый запрос SELECT
, который представит все данные из таблицы actor. Он будет выглядеть следующим образом:
SELECT *FROM sakila.actor
Результат запроса будет представлен на картинке ниже.
Заключение
В данной статье была представлена инструкция по правильной установке MySQL на Windows 10. Также, во время нее была произведена настройка конфигураций MySQL Server, MySQL Routers и Samples and Examples. Этого будет достаточно для работы с небольшими проектами в MySQL. Для более серьёзных проектов необходимо сделать еще ряд действий, помимо тех, что были представлены в данной статье. В том числе правильно настроить конфигурацию MySQL Routers для работы кластерной СУБД.
Время на прочтение
6 мин
Количество просмотров 11K
MySQL на сегодняшний день является одной из наиболее распространенных в мире. Достаточно сказать, что по рейтингам 2021 года данная СУБД лишь немного уступала Oracle.
В серии из трех статей мы рассмотрим основные моменты связанные с редакциями MySQL, обсудим архитектуру, процесс установки и базовой настройки. Во второй статье мы займемся созданием репликации БД. И в третьей части мы поговорим о различных способах резервного копирования данных в БД.
Начнем с рассмотрения редакций СУБД MySQL.
Ванильная сборка
Классическая версия MySQL от Oracle это свободная реляционная система управления базами данных. На сегодняшний день разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Такая несколько сложная «пищевая цепочка» не помешала данной БД получить широкое распространение. Далее, когда мы будем рассматривать практические примеры развертывания, будет использоваться именно классическая редакция MySQL.
MariaDB
СУБД MariaDB — ответвление MySQL, разрабатываемое сообществом под лицензией GNU GPL. Разработку и поддержку MariaDB осуществляет компания MariaDB Corporation Ab и фонд MariaDB Foundation. При этом СУБД MariaDB совместима с MySQL до версии 5.6.
Движки MySQL
База данных может работать с несколькими типами движков (engines). В таблице ниже приведены основные характеристики каждого из них.
Name |
Vendor |
License |
Transactional |
Under active development |
MySQL versions |
MariaDB versions |
Archive |
Oracle |
GPL |
No |
Yes |
5.0 — present |
5.1 — present |
Aria |
MariaDB |
GPL |
No |
Yes |
None |
5.1 — present |
Berkeley DB |
Oracle |
AGPLv3 |
Yes |
No |
? — 5.0 |
None |
BLACKHOLE |
Oracle |
GPL |
No |
Yes |
5.0 — present |
5.1 — present |
CONNECT |
MariaDB |
GPL |
No |
Yes |
None |
10.0 — present |
CSV |
Oracle |
GPL |
No |
Yes |
5.0 — present |
5.1 — present |
Falcon |
Oracle |
GPL |
Yes |
No |
? |
None |
Federated |
Oracle |
GPL |
? |
No |
5.0 — present |
? |
FederatedX |
MariaDB |
GPL |
Yes |
No |
None |
? — present |
ColumnStore (formerly InfiniDB) |
Calpont |
GPL |
Yes |
Yes |
None |
10.5.4 — present |
InnoDB |
Oracle |
GPL |
Yes |
Yes |
3.23 — present |
5.1 — present |
MEMORY |
Oracle |
GPL |
No |
Yes |
3.23 — present |
5.1 — present |
Mroonga |
Groonga Project |
GPL |
No |
Yes |
None |
10.0 — present |
MyISAM |
Oracle |
GPL |
No |
No |
3.23 — present |
5.1 — present |
MyRocks |
|
GPLv2 |
Yes |
Yes |
None |
10.2 — present |
NDB |
Oracle |
GPLv2 |
Yes |
Yes |
? |
None |
OQGRAPH |
Oracle |
GPLv2 |
No |
No |
None |
5.2 — present |
S3 |
MariaDB |
GPL |
No |
Yes |
None |
10.5 — present |
SEQUENCE |
MariaDB |
GPL |
No |
Yes |
None |
10.0 — present |
Sphinx |
Sphinx Technologies Inc. |
GPL |
No |
No |
None |
5.2 — present |
SPIDER |
Kentoku Shiba |
GPL |
Yes |
Yes |
None |
10.0 — present |
TempTable |
Oracle |
GPL |
No |
Yes |
8.0 — present |
None |
TokuDB |
Percona |
Modified GPL |
Yes |
No |
None |
5.5 — present |
XtraDB |
Percona |
GPL |
Yes |
Yes |
None |
5.1 — 10.1 |
В этой статье я не буду подробно рассматривать все представленные движки, вместо этого будут рассмотрены только основные. Для ознакомления с рекомендациями по использование остальных предлагаю обратиться к следующей статье — Краткий обзор движков таблиц MySQL.
MyISAM
MyISAM это базовый тип хранилища MySQL. Однако, в нем отсутствуют блокировки на строки и нет транзакций. Как можно понять из названия, движок основывается на принципах ISAM и обладает в сравнении с ним рядом полезных дополнений. Так, он имеет возможности по сжатию данных, по созданию полнотекстовых индексов. Но при этом СУБД не является устойчивой к сбоям и не выполняет требования ACID.
Поддерживается с версий MySQL 3.x, до версий MySQL 5.5, являлась системой хранения по умолчанию.
Немного теории:
ISAM (Indexed Sequential Access Method — индексно-последовательный метод доступа) — способ хранения данных с возможностью быстрого доступа к ним, является наиболее популярным методом индексирования.
ACID (atomicity, consistency, isolation, durability) — набор требований к транзакционной СУБД, обеспечивающий наиболее надёжную и предсказуемую её работу — атомарность, согласованность, изоляцию и устойчивость.
Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.
Согласованность – транзакция, достигающая своего нормального завершения и тем самым фиксирующая свои результаты, сохраняет согласованность базы данных.
Изоляция — во время выполнения транзакции параллельные транзакции не должны оказывать влияния на её результат.
Устойчивость — независимо от проблем с питанием или сбоях в оборудовании изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.
InnoDB
InnoDB механизм хранения общего назначения, который обеспечивает высокую надежность и высокую производительность. В MySQL 8.0 механизм хранения по умолчанию. Движок был разработан специально для больших таблиц и показывает наибольшую скорость при работе с БД основанных на дисках.
Преимуществами InnoDB является возможность блокировки на уровне таблиц (читаем, если нет блокировки на запись, пишем, если нет блокировок), поддержка восстановления по времени (binary log), репликаций и конкурентного INSERT.
Установка MySQL
Теперь перейдем непосредственно к установке СУБД. Процесс не должен вызвать особых сложностей:
sudo apt update && sudo apt upgrade -y && sudo apt-get install -y mysql-server
После установки необходимо выполнить харденинг, то есть указать настройки безопасности:
sudo mysql_secure_installation
• Удалить анонимных пользователей? (Нажмите y | Y для Yes, любую другую клавишу для No): y
• Запретить вход в систему удаленно? (Нажмите y | Y для Yes, любую другую клавишу для No): y
• Удалить тестовую базу данных и получить доступ к ней? (Нажмите y | Y для Yes, любую другую клавишу для No): y
• Обновить таблицы привилегий сейчас? (Нажмите y | Y для Yes, любую другую клавишу для No): y
Далее перезапустим MySQL:
sudo systemctl status mysql
sudo systemctl enable mysql
Для того, чтобы не вводить каждый раз пароль, мы можем его прописать в домашней папке в файле .my.cnf, имеющем следующую структуру:
sudo su
cd $HOME
nano .my.cnf
[client]
Password=“Otus321$”
sudo mysql
Архитектура MySQL
Прежде, чем выполнять какие-либо настройки и запросы в СУБД давайте посмотрим, из чего состоит MySQL.
Давайте посмотрим, как это устроено в процессах:
$ ps ax | grep mysqld
$ ps –eLf | grep mysqld
Как мы видим, процесс /usr/sbin/mysqld после успешного запуска порождает множество подпроцессов, которые использует СУБД в своей работе.
На файловом уровне MySQL хранит все данные в каталоге /var/lib/mysql:
$ sudo ls -l /var/lib/mysql
О некоторых представленных здесь файлах и каталогах мы еще будем говорить в следующих статьях.
Основной конфигурационный файл находится в /etc/mysql/mysql.conf.d/:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Для тестовой инсталляции как правило вносить изменения в этот файл не нужно.
Работаем с таблицами
Далее выполним sudo mysql и перейдем непосредственно в командную среду СУБД.
Структура таблиц после установки имеет следующий вид
> use mysql
> show tables;
Сейчас здесь присутствуют только служебные таблицы, созданные вместе с СУБД.
Создадим свою базу Otus_test:
CREATE DATABASE IF NOT EXISTS Otus_test;
Можно было бы прибегнуть к использованию команды CREATE DATABASE но тогда мы бы получили ошибку, если бы такая база существовала.
Перейдем в созданную БД:
USE Otus_test;
Далее давайте создадим тестовую таблицу в которой будет три столбца: id, name, address. Первичным ключом будет id. В качестве движка явно укажем InnoDB.
CREATE TABLE Otus_table
(
id int NOT NULL AUTO_INCREMENT,
name char(20) NOT NULL,
address char(20) NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;
Добавим пару записей в таблицу:
INSERT Otus_table(Name, Address) VALUES ('Admin', 'Moscow');
INSERT Otus_table(Name, Address) VALUES ('User', 'N/A');
И сделаем выборку по таблице:
SELECT * FROM Otus_table;
Как видно все записи успешно добавлены в таблицу.
Немного о кодировках
Для промышленного использования СУБД необходимо, чтобы данные в кириллице хранились и отображались корректно. Кодировка (characher set) — набор используемых символов. Представление (collation) — набор правил для сравнения символов в наборе. Символьная кодировка может быть задана для сервера, базы данных, таблицы и колонок в таблице.
В качестве примера настроим кодировку UTF8 в качестве кодировки по-умолчанию. Для этого откроем уже известный нам файл конфигураций mysqld.cnf
nano /etc/mysql/mysql.conf.d/mysqld.cnf
и добавим в него следующее:
[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
character-set-server = utf8
collation-server = utf8_unicode_ci
[mysql]
default-character-set = utf8
Далее перезапустим БД
systemctl restart mysql
Проверим корректность работы с кириллицей:
INSERT Otus_table(Name, Address) VALUES ('Пользователь', 'N/A');
SELECT * FROM Otus_table;
Как видно, русскоязычные данные корректно сохранены.
Заключение
В этой статье мы рассмотрели основы работы с CУБД MySQL, установку и базовую настройку. Далее мы будем говорить о репликации, построении отказоустойчивых конфигураций, партиционировании и бэкапах.
Так как данный материал подготовлен в рамках запуска курса «Базы данных», хочу порекомендовать всем читателям бесплатный урок по PostgreSQL 15. В рамках урока обсудим новый функционал, деплой в Яндекс Облаке и настройку защищенного подключения. Варианты обновления с предыдущих версий PostgreSQL и их особенности. Подводные камни при обновлении версий.
-
Зарегистрироваться на бесплатный урок
Введение
MySQL — реляционная система управления базами данных с открытым исходным. Простота использования и низкий порог входа сделал ее одной из популярных свободно распространяемых систем управления базами данных. MySQL используется как во многих небольших проектах (например, сайтах на WordPress), так и в высоконагруженных корпоративных системах.
В этой статье мы рассмотрим особенности установки MySQL на операционную систему Windows и расскажем о создании пользователей, оптимальной настройке производительности, устранении неполадок и о многом другом.
Подготовка Windows-сервера к установке MySQL
Перед началом подготовки сервера, закажем лицензию для Windows. Без этого создать сервер не получится. Для этого перейдем на экран «Лицензии» и нажмем кнопку «Купить лицензию».
В открывшемся выпадающем меню выберем соответствующий типа лицензии Windows Server 2019 Standard и нажмем кнопку «Оплатить».
После этого в списке лицензий появится лицензия Windows Server 2019 Standard.
Теперь можно приступать к подготовке сервера на базе ОС Windows Server 2019. Для этого в панели управления Selectel перейдем на экран «Облачная платформа» и нажмем на кнопку «Создать сервер».
В качестве образа операционной системы необходимо выбрать образ операционной системы Windows. Для этого нажмем на кнопку «Выбрать другой источник».
В появившемся всплывающем меню выберем готовый образ операционной системы Windows Server 2019 Standard Legacy BIOS и нажмем на кнопку «Выбрать».
В разделе «Серверы» и привязываем к серверу созданную лицензию. После выполненных действий нажимаем на кнопку «Создать».
Через несколько минут сервер перейдет в состояние Active и к нему можно будет подключиться по протоколу RDP.
После создания сервера, ему автоматически присваивается пароль учетной записи Administrator. Под этой учетной записью мы и подключаемся по RDP.
После выполненных подготовительных действий, можно приступать к установке MySQL на Windows-сервер.
Установка MySQL
Перед началом установки скачаем дистрибутив из специального раздела на официальном сайте MySQL. Нажимаем кнопку Go to Download Page.
После перехода на страницу загрузки выбираем опцию Windows (x86, 32-bit), MSI Installer (mysql-installer-community) и нажимаем на кнопку Download. Это на самом деле 64-битная версия СУБД, которая отмечена вендором как 32-битная. В результате мы получим установочный пакет, который затем можно установить на сервер даже без подключения к интернету.
Также можно скачать версию mysql-installer-web-community, которая представляет собой автоматический установщик и работает при наличии подключения сервера к интернету. На серверах все же не часто можно встретить свободный доступ к интернету. После загрузки дистрибутива приступим к его установке.
Дистрибутив должен появиться в папке с загрузками. Теперь можем его выполнить из контекстного меню и начать установку.
В появившемся представлении выбираем в меню Full для установки всех компонентов СУБД. Для работы с базой данных будет достаточно установить Server Only. В примере мы выбрали Full, т.к. считаем, что для знакомства с базой данных дополнительно понадобится визуальная консоль для управления MySQL Workbench. Также будут полезны примеры данных, с которыми можно сразу начинать работу для эффективного изучения работы СУБД. Также есть возможность выбрать для установки отдельные элементы, выбрав в меню пункт Custom. Нажимаем кнопку Next.
На следующем экране появятся системные требования к установке, выполнив которые, установщик приведет систему в соответствие с ними. Нажмем на кнопку Execute.
После установки дополнительных пакетов нажимаем кнопку Next. Пакеты в статусе Manual являются опциональными и не будут препятствовать нормальной работе СУБД.
На следующем экране будут показаны устанавливаемые компоненты. Проверяем статус готовности к установке каждого компонента и нажимаем на кнопку Execute.
После установки компонентов убедимся в наличии статуса Complete по каждому из них. После этого нажмем на кнопку Next для перехода к следующему экрану.
На следующем представлении установщик предлагает выполнить конфигурацию компонентов MySQL Server, MySQL Router и Samples and Examples. Нажимаем кнопку Next.
В выпадающем меню Config Type выбираем Development Computer, т.к. установка выполняется в целях демонстрации. Для подключения к базе данных будем использовать протокол TCP/IP. Другие два варианта подключения, помимо TCP/IP, лучше использовать при локальном подключении, т.е. когда приложение установлено на том же сервере, что и база данных.
Например, метод подключения Shared Memory более производителен, он помогает избегать использование сетевого стека. Заметим, что в производственных средах метод подключения через TCP/IP более предпочтителен, т.к. приложение может иметь тенденцию к росту. Использование этого протокола в распределенной среде упрощает выявление и диагностику нештатного взаимодействия базы данных и приложения. Остальное оставляем по умолчанию и нажимаем кнопку Next.
На следующем экране выбираем тип аутентификации. Воспользуемся рекомендацией вендора, выберем пункт Use Strong Password Encryption for Authentication. Переключение на Use Legacy Authentication Method можем рассматривать только если драйвера приложения не поддерживают подключение к 8 версии MySQL. Нажимаем кнопку Next и переходим к следующему экрану.
На следующем экране установим пароль суперпользователя. Чтобы он был устойчивым к взлому, необходимо использовать символы в верхнем и нижнем регистрах, цифры и спецсимволы. Длина пароля должна быть не менее 8 символов. На этом же экране можно создать и другие пользовательские учетные записи. Созданием новых пользователей займемся после полной установки базы данных MySQL и ее компонентов. Далее нажимаем кнопку Next.
На следующем экране установщик предлагает запускать MySQL Server в виде Windows-сервиса и установить его имя. Это самый приемлемый вариант, т.к. в противном случае запуск MySQL придется выполнять из командной строки. Чекбокс Start the MySQL Server at System Startup оставляем по умолчанию, чтобы база данных запускалась вместе с запуском сервера. В разделе Run Windows Service as… оставим значение Standard System Account, т.к. нет никаких причин запускать сервис MySQL от специализированной учетной записи. В некоторых случаях это бывает необходимо. Нажимаем кнопку Next.
Следующий этап — выполнение конфигурации в автоматическом режиме. Нажимаем кнопку Execute.
После выполнения конфигурации в автоматическом режиме все этапы должны быть помечены зеленой галочкой. Нажимаем кнопку Finish.
Следующий этап — конфигурирование MySQL Router и встроенных примеров. Нажимаем Next.
На экране с конфигурацией MySQL Router оставляем все по умолчанию и нажимаем кнопку Finish. Это функционал позволяет распределять нагрузку между экземплярами MySQL в рамках кластера. В нашем случае при установке единственного экземпляра базы данных этот функционал не имеет смысла.
На следующем экране установщик предложит выполнить конфигурирование примеров — их загрузку в БД. Нажимаем Next.
После этого появится экран с полем для ввода реквизитов доступа к БД и кнопкой для тестирования подключения — Check. Вводим логин и пароль, которые задавали ранее и нажмем кнопку. После подтверждения успешного подключения нажмем на кнопку Next.
На следующем экране будет предложено проверить уже установленных в БД примеров и установить их (запустить скрипты). Нажимаем кнопку Execute.
После успешной проверки и установки нажимаем кнопку Finish.
На следующем экране будет выдано сообщение об успешной установке примеров в БД. Нажимаем кнопку Next.
На этом установка завершена. Перед нажатием на кнопку Finish выберем чекбокс напротив Start MySQL Workbench after setup, что позволит автоматически запустить соответствующую консоль управления.
Консоль запущена и можно переходить к работе с СУБД MySQL Server и ее дополнительной настройке.
Проверка работоспособности MySQL
После подключения к БД MySQL в окне для ввода запроса введем select 1 from dual и в результате в ответе получим 1. В нижней части рабочей области в поле Output зеленой галочкой отмечен успешный статус выполнения запроса.
Также мы можем перейти на вкладку Schemas и обнаружим тестовые данные, которые были загружены в базу данных во время установки. Из контекстного меню выполним запрос в таблицу film_actor. В ответе получим значения столбцов actor_id, film_id и last_update.
Базовая настройка MySQL
После проверки корректности исполнения запросов, добавим новую пользовательскую учетную запись. Для этого на вкладке Administration перейдем в представление Users and Privileges. Нажмем на кнопку Add Account и заполним поля Login Name, Password и Confirm Password. Остальное оставим без изменений.
Еще один важный экран — Options File. Располагается также на вкладке Administration. Здесь можно в графическом интерфейсе изменять переменные, которые задаются в конфигурационном файле my.ini.
В MySQL Workbench можно также следить за производительностью базы данных. Отдельные метрики сгруппированы для удобства просмотра. Здесь присутствуют следующие группы: Memory Usage, Hot Spots for I/O, High Cost SQL Statements, Database Schema Statistics, Wait Event Times, InnoDB Statistics и User Resource Use.
Заключение
В статье мы рассмотрели установку и базовую настройку MySQL Server. Этого достаточно для запуска простого проекта, например, блога на WordPress. При необходимости MySQL может поддерживать высоконагруженные проекты за счет возможности работы в режиме кластера высокой доступности.
Данный документ поможет пользователю в настройке и использовании MySQL.
Начало работы с MySQL
Введение
MySQL — это популярный сервер баз данных, используемый в разных приложениях. SQL означает язык структурированных запросов — (S)tructured (Q)uery (L)anguage, который MySQL использует для коммуникации с другими программами. Сверх того, MySQL имеет свои собственные расширенные функции SQL для того чтобы обеспечить пользователям дополнительный функционал. В этом документе мы рассмотрим как провести первоначальную установку MySQL, настроить базы данных и таблицы, и создать новых пользователей. Давайте начнем с установки.
Установка MySQL
Сначала убедитесь что MySQL установлен на вашу систему. В случае если вам требуется определенная функциональность MySQL, убедитесь, что установлены необходимые USE-флаги, так как они помогут в тонкой настройке инсталляции.
По завершении установки, вы увидите следующее уведомление:
КОД Сообщение einfo MySQL
You might want to run: "emerge --config =dev-db/mysql-[version]" if this is a new install.
Так как это новая установка, мы запустим эту команду. Вам надо нажать ENTER
по запросу во время конфигурации базы данных MySQL. В процессе конфигурации устанавливается основная база данных MySQL, которая содержит служебную информацию, такую как базы данных, таблицы, пользователи, разрешения и т.д. В процессе конфигурации рекомендуется чтобы вы изменили свой пароль root так быстро, как это возможно. Мы определенно это сделаем, иначе кто-нибудь сможет волей случая появиться и взломать сервер MySQL, настроенный по умолчанию.
root #
emerge --config =dev-db/mysql-[version]
* MySQL DATADIR is /var/lib/mysql * Press ENTER to create the mysql database and set proper * permissions on it, or Control-C to abort now... Preparing db table Preparing host table Preparing user table Preparing func table Preparing tables_priv table Preparing columns_priv table Installing all prepared tables To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, issue the following commands to start the server and change the applicable passwords: /etc/init.d/mysql start /usr/bin/mysqladmin -u root -h pegasos password 'new-password' /usr/bin/mysqladmin -u root password 'new-password' Depending on your configuration, a -p option may be needed in the last command. See the manual for more details.
Заметка
Если предыдущая команда не выполнится из-за того, что имя хоста установлено в localhost, измените его на другое имя, например gentoo. Обновите файл /etc/conf.d/hostname и перезапустите /etc/init.d/hostname.
Некоторая нехарактерная для ebuild-файлов информация MySQL удалена отсюда, чтобы содержать этот документ настолько последовательным, насколько возможно.
Важно
Начиная с mysql-4.0.24-r2, пароли вводятся во время этапа конфигурации, что делает пароль root более надежным.
Сценарий конфигурации уже вывел команды, которые нам нужно запустить, чтобы настроить наш пароль, поэтому нам сейчас надо их выполнить.
Если вы используете OpenRC, выполните данную команду:
root #
/etc/init.d/mysql start
* Re-caching dependency info (mtimes differ)... * Starting mysqld (/etc/mysql/my.cnf) ... [ ok ]
Если вы используете systemd, вместо этого используйте следующую команду:
root #
systemctl restart mysqld.service
With >=dev-db/mariadb-10.1.18, use:
root #
systemctl restart mariadb.service
После этого установите пароль root:
root #
/usr/bin/mysqladmin -u root -h localhost password 'new-password'
Теперь вы можете проверить, что пароль root был успешно настроен, попытавшись войти на MySQL-сервер:
user $
mysql -u root -h localhost -p
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 4 to server version: 4.0.25 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql>
Параметр -u
указывает пользователя, который будет выполнять вход. Параметр -h
указывает хост. Обычно это будет localhost
, если только вы не настраиваете удаленный сервер. И, наконец, -p
сообщает клиенту mysql что вы будете вводить пароль для доступа к базе данных. Обратите внимание на приглашение mysql>
. Это то место, где вы будете вводить все ваши команды. Теперь, когда мы в командной строке mysql в качестве пользователя root, мы можем начать настраивать нашу базу данных.
Важно
Установка mysql по умолчанию приемлема для систем разработки. Для более безопасных значений по умолчанию можно запустить /usr/bin/mysql_secure_installation
Настройка Базы Данных
Создание Базы Данных
Мы вошли и приглашение mysql показано на экране. Сначала, давайте рассмотрим базы данных, которые у нас имеются в настоящий момент. Чтобы это сделать, мы используем команду SHOW DATABASES
.
mysql>
SHOW DATABASES;
+----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.09 sec)
Важно
Пожалуйста, запомните что команды MySQL должны оканчиваться точкой с запятой — ;
Вопреки тому факту, что тестовая база данных уже создана, мы собираемся создать нашу собственную. Базы данных создаются с использованием команды CREATE DATABASE
. Мы создадим одну из них под названием gentoo.
mysql>
CREATE DATABASE gentoo;
Query OK, 1 row affected (0.08 sec)
Ответ позволяет нам узнать, что команда была выполнена без ошибок. В этом случае, одна строка была изменена. Это является отсылкой к основной базе данных mysql, которая содержит список всех баз данных. Вам не нужно сильно беспокоиться о второстепенных деталях. Последнее число является характеристикой того, насколько быстро был выполнен запрос. Мы можем проверить, что база данных была создана, запустив команду SHOW DATABASES
снова.
mysql>
SHOW DATABASES;
+----------+ | Database | +----------+ | gentoo | | mysql | | test | +----------+ 3 rows in set (0.00 sec)
В самом деле, наша база данных была создана. Для того чтобы работать с созданием таблиц для нашей новой базы данных gentoo, нам надо выбрать ее в качестве текущей базы данных. Чтобы это сделать, мы используем команду USE
. Команда USE
принимает имя базы данных, которую вы хотите использовать в качестве текущей. Другой возможностью является ее установка в командной строке после параметра -D
. Давайте продолжим и переключимся к базе данных gentoo.
mysql>
USE gentoo;
Database changed
Сейчас, текущей базой данных является созданная нами ранее база данных gentoo. Теперь, когда мы ей пользуемся, мы можем начать создавать таблицы и заполнять их информацией.
Работа с таблицами в MySQL
Создание таблицы
В структуру MySQL входят базы данных, таблицы, записи, и поля. Базы данных объединяют таблицы, таблицы объединяют записи, записи объединяют поля, которые содержат действительную информацию. Такая структура позволяет пользователям выбирать как они хотят обращаться к своей информации. На данный момент, мы разобрались с базами данных, теперь давайте поработаем с таблицами. Во-первых, таблицы могут быть перечислены, подобно базам данных, с использованием команды SHOW TABLES
. Сейчас, в базе данных gentoo не имеется таблиц, как и показывает нам следующая команда:
mysql>
SHOW TABLES;
Empty set (0.00 sec)
Это означает нам надо создать какие-либо таблицы. Чтобы это сделать, мы используем команду CREATE TABLE
. Однако, эта команда достаточно отличается от простой команды CREATE DATABASE
тем что принимает список аргументов. Формат команды следует ниже:
КОД Синтаксис CREATE TABLE
CREATE TABLE [table_name] ([field_name] [field_data_type]([size]));
table_name — это имя таблицы, которую мы хотим создать. В данном случае, давайте создадим таблицу с именем developers
. Эта таблица будет хранить имя разработчика, email адрес и его должность.
field_name будет хранить имя поля. В этом случае мы имеем три требуемых имени: имя разработчика, email адрес, и должность.
field_data_type — это то, какой тип информации будет сохранен. Различные доступные форматы могут быть найдены по адресу MySQL Column Types Page . Для наших целей, мы будем использовать тип данных VARCHAR
для всех наших полей. VARCHAR
— это один из простейших типов данных, когда дело касается работы со строками.
size — это то, как много данных будет хранить одно поле. В нашем случае, мы будем использовать 128. Это означает, что поле будет иметь данные типа VARCHAR
, которые занимают 128 байт. В настоящий момент, вы можете спокойно думать об этом как о 128 символах, хотя существует более техническое объяснение, которое вам предоставит сайт, указанный выше. Теперь, когда мы знаем как мы создадим таблицу, давайте это сделаем.
mysql>
CREATE TABLE developers ( name VARCHAR(128), email VARCHAR(128), job VARCHAR(128));
Query OK, 0 rows affected (0.11 sec)
Похоже, наша таблица была успешно создана. Давайте проверим это командой SHOW TABLES
:
mysql>
SHOW TABLES;
+------------------+ | Tables_in_gentoo | +------------------+ | developers | +------------------+ 1 row in set (0.00 sec)
Да, наша таблица существует. Однако, она, по-видимому, не имеет никакой информации о типах полей, которые мы создали. Для этого, мы используем команду DESCRIBE
(или, кратко, DESC
), которая принимает имя таблицы в качестве своих аргументов. Давайте посмотрим что она нам даст для нашей таблицы developers.
mysql>
DESCRIBE developers;
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | name | varchar(128) | YES | | NULL | | | email | varchar(128) | YES | | NULL | | | job | varchar(128) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
Показаны разные поля и их типы. Также показано несколько дополнительных атрибутов, которые находятся за рамками данного руководства. Пожалуйста, обратитесь за подробностями к Справочному Руководству MySQL . Теперь у нас есть таблица для работы с ней. Давайте продолжим и заполним ее.
Заполнение Базы Данных MySQL
Мы заполним таблицу (или добавим в нее данные), используя команду INSERT
. Подобно команде CREATE TABLE
, она также имеет особый формат:
КОД Синтаксис INSERT
INSERT INTO table (col1, col2, ...) VALUES('value1', 'value2', ...);
Эта команда используется для вставки записи в таблицу. table содержит таблицу MySQL, в которую мы хотим ввести информацию. Имя таблицы может сопровождаться списком столбцов для вставки данных, VALUES()
хранит значения, которые вы хотите вставить в таблицу. Вы можете опустить список столбцов, если вы вставляете значение в каждый из них и если Вы пишете значения в том же порядке, в котором определены столбцы. В данном случае, мы хотим вставить данные в таблицу developers. Давайте добавим примеры записей:
mysql>
INSERT INTO developers VALUES('Joe Smith', 'joesmith@gentoo.org', 'toolchain');
Query OK, 1 row affected (0.06 sec) ## (Если вы не знаете порядок столбцов в таблице или хотите вставить неполную запись) mysql> INSERT INTO developers (job, name) VALUES('outsourced', 'Jane Doe'); Query OK, 1 row affected (0.01 sec)
В соответствии с полученным результатом, кажется, запись была вставлена правильно. Что если мы хотим ввести больше, чем просто одну запись? Это тот случай, когда команда LOAD DATA
вступает в действие. Она загружает записи из файла, разделенного символами табуляции. Давайте это попробуем, отредактировав файл в домашнем каталоге пользователя и добавив в него записи. Мы назовем этот файл records.txt . Здесь приведен пример:
КОД ~/records.txt
John Doe johndoe@gentoo.org portage Chris White chriswhite@gentoo.org documentation Sam Smith samsmith@gentoo.org amd64
Важно
Убедитесь, что вы знаете, с какими данными вы будете работать. Очень небезопасно использовать LOAD DATA
, когда вы не уверены насчет содержимого файла!
Команда LOAD DATA
имеет в каком-то смысле пространное определение, но здесь мы используем ее самую простую форму.
КОД Синтаксис LOAD DATA
LOAD DATA LOCAL INFILE '/path/to/filename' INTO TABLE table;
/path/to/filename — это каталог и имя файла, которые будут использоваться. table — это имя нашей таблицы. В этом случае, наш файл — ~/records.txt, а имя таблицы — developers.
mysql>
LOAD DATA LOCAL INFILE '~/records.txt' INTO TABLE developers;
Query OK, 3 rows affected (0.00 sec) Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
Важно
Если вы обнаружили какое-либо странное поведение, убедитесь, что поля разделены символами табуляции. Если вы вставите информацию в ваш исходный файл из другого источника, это может конвертировать символы табуляции в пробелы.
Сработало хорошо. Однако, это просто вставляет записи, и не дает вам какого-либо контроля над MySQL. Множество веб-приложений используют скрипты sql для того чтобы настроить MySQL быстро и легко. Если вы хотите использовать скрипты sql, вам нужно запустить mysql в пакетном режиме, или использовать файл в качестве источника команд. Здесь приведен пример запуска mysql в пакетном режиме:
user $
mysql -u root -h localhost -p < sqlfile
Как и в случае с LOAD DATA
, убедитесь, что вы можете сказать что делает файл sqlfile. Невозможность этого может скомпрометировать вашу базу данных! Другим способом выполнения этого является использование команды source
. Эта команда запустит команды из файла sql, находясь в интерактивном режиме mysql. Здесь показано как использовать sql file в качестве источника команд:
Если вы видите, что веб-приложение требует запуск sql файла, две команды выше могут быть использованы для выполнения данной задачи. Мы настроили нашу таблицу, как же нам проверить наши поля? Мы выполним это поиском в нашей таблице с помощью запросов.
Запросы к Таблицам MySQL
Запросы являются одной из основных функций любой базы данных SQL. Они помогают превратить данные в таблицах во что-то полезное. Большинство запросов выполняются командой SELECT
. Команда SELECT
— довольно сложна, и мы рассмотрим только три основных формы этой команды в данном документе.
КОД Виды команды SELECT
## (Выбрать все записи в таблице) SELECT * FROM table; ## (Выбрать определенные записи в таблице) SELECT * FROM table WHERE field=value; ## (Выбрать определенные поля) SELECT field1,field2,field3 FROM table [WHERE field=value];
Давайте-ка быстро рассмотрим первую форму команды. Она относительно проста и дает общее представление о вашей таблице. Мы продолжим и запустим ее, чтобы посмотреть какие данные у нас есть в настоящий момент.
mysql>
SELECT * FROM developers;
+-------------+-----------------------+----------------+ | name | email | job | +-------------+-----------------------+----------------+ | Joe Smith | joesmith@gentoo.org | toolchain | | John Doe | johndoe@gentoo.org | portage | | Chris White | chriswhite@gentoo.org | documentation | | Sam Smith | samsmith@gentoo.org | amd64 | | Jane Doe | NULL | Outsourced job | +-------------+-----------------------+----------------+ 5 rows in set (0.00 sec)
Мы видим как данные, которые мы добавили с INSERT
, так и вставленные LOAD DATA
. Теперь, давайте предположим что мы просто хотим посмотреть запись для Chris White. Мы можем сделать это с помощью второй формы команды select, как показано ниже.
mysql>
SELECT * FROM developers WHERE name = 'Chris White';
+-------------+-----------------------+---------------+ | name | email | job | +-------------+-----------------------+---------------+ | Chris White | chriswhite@gentoo.org | documentation | +-------------+-----------------------+---------------+ 1 row in set (0.08 sec)
Как предполагалось, выбрана отдельная запись, которую мы искали. Теперь, предположим, мы только хотели узнать должность и email адрес данной персоны, но не ее имя. Мы можем это выполнить с помощью третьей формы SELECT
, как здесь и показано.
mysql>
SELECT email,job FROM developers WHERE name = 'Chris White';
+-----------------------+---------------+ | email | job | +-----------------------+---------------+ | chriswhite@gentoo.org | documentation | +-----------------------+---------------+ 1 row in set (0.04 sec)
Этот способ выбора намного легче в управлении, особенно с большими объемами информации, как мы увидим позже. А сейчас, будучи mysql пользователем root, мы обладаем неограниченными разрешениями делать с базой данных MySQL то, что мы захотим. В среде выполнения сервера, наличие пользователя с такими привилегиями может вызвать немало проблем. Для того, чтобы контролировать кто и что может делать с базами данных, мы установим привилегии.
Привилегии MySQL
Привилегии — это то, каким доступом обладают пользователи к базам данных, таблицам, почти ко всему. На данный момент в базе данных gentoo, учетная запись MySQL root — это единственная учетная запись, которая может получить к ней доступ, учитывая ее разрешения. Теперь, давайте создадим двух обычных пользователей, guest и admin, которые получат доступ к базе данных gentoo и будут работать с информацией, хранящейся в ней. Учетная запись guest будет ограниченной в правах. Все, что он сможет сделать, это получить информацию из базы данных, и только это. admin будет иметь те же самые права на управление, что и root, но только к базе данных gentoo (а не основным базам данных mysql). Перед тем как начать, давайте рассмотрим подробнее этот, в некотором смысле, упрощенный формат команды GRANT
.
Creating users
The CREATE USER SQL statement will define users and set the authentication method, commonly by password but other plugins may be available.
An example CREATE USER command is:
КОД CREATE USER Syntax
CREATE USER '[user]'@'[host]' IDENTIFIED BY '[password]';
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. To create our users for this example:
(admin)
mysql>
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
(guest)
mysql>
CREATE USER 'guest'@'localhost' IDENTIFIED BY 'password';
Важно
A host of ‘localhost’ does not mean DNS localhost (127.0.0.1) to MySQL. Instead, it refers to the UNIX socket connection and not TCP/IP.
Предоставление Привилегий Командой GRANT
Let’s have a closer look at this somewhat simplified format of the GRANT command.
КОД Синтаксис команды GRANT
GRANT [privileges] ON database.* TO '[user]'@'[host]' IDENTIFIED BY '[password]';
Во-первых, мы имеем привилегии, которые мы хотим назначить. Исходя из того что мы выучили на данный момент, имеются несколько привилегий, которые вы можете установить:
ALL
— Дает полный контроль базы данных со всеми привилегиямиCREATE
— Позволяет пользователям создавать таблицыSELECT
— Позволяет пользователям делать запросы к таблицамINSERT
— Позволяет пользователям вставлять данные в таблицуSHOW DATABASES
— Позволяет пользователям просматривать список баз данныхUSAGE
— Пользователь не имеет привилегийGRANT OPTION
— Позволяет пользователям предоставлять привилегии
Заметка
Если вы запустили MySQL чтобы передавать данные веб-приложению, CREATE
, SELECT
, INSERT
(обсуждалось здесь же), DELETE
и UPDATE
(для получения дальнейшей информации посмотрите раздел Справочного Руководства MySQL — Синтаксис GRANT и REVOKE) — это единственные разрешения, которые вам, скорее всего, понадобятся. Большинство делает ошибку, предоставляя все разрешения, когда в этом нет действительной необходимости. Сверьтесь с разработчиками приложения, чтобы посмотреть, не вызовут ли такие разрешения проблемы в общей работе.
Для пользователя admin, подойдет уровень ALL. Для пользователя guest, SELECT
будет достаточно для доступа только на чтение. database — это база данных, над которой пользователь, как мы того желаем, должен иметь эти разрешения. В этом примере, базой данных является gentoo. .* означает все таблицы. Если бы вы хотели, вы могли бы установить права доступа для каждой из таблиц. user — это имя пользователя, а host — имя хоста, с которого пользователь будет получать доступ. В большинстве случаев, это будет localhost. И наконец, password — это пароль пользователя. Учитывая эту информацию, давайте продолжим и создадим наших пользователей.
mysql>
GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY 'password';
mysql>
GRANT SELECT ON gentoo.* TO 'guest'@'localhost' IDENTIFIED BY 'password';
Теперь, когда мы настроили наших пользователей, давайте их протестируем. Сначала, мы завершим работу mysql, введя quit
в командной строке:
Теперь мы снова в консоли. Сейчас, когда пользователи созданы, давайте продолжим и посмотрим что они могут делать.
Проверка Пользовательских Разрешений
Сейчас мы должны попытаться войти в качестве пользователя guest. В настоящий момент, пользователь guest имеет только привилегии SELECT
. Это, просто-напросто, сводится к способности поиска в базе данных, и ничему другому. Продолжайте и войдите как пользователь guest.
user $
mysql -u guest -h localhost -p
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 6 to server version: 4.0.25 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql>
Теперь мы должны протестировать пользовательские ограничения. Давайте переключимся к базе данных gentoo:
mysql>
USE gentoo;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
Давайте попробуем сделать что-нибудь, что мы, как предполагается, не должны. Мы попытаемся создать таблицу.
mysql>
CREATE TABLE test (test VARCHAR(20), foobar VARCHAR(2));
ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'
Как видите, эта функция не сработала, так как наш пользователь не имеет соответствующих прав доступа. Однако, одной из привилегий, которую мы предоставили, является выражение SELECT
. Давайте попробуем:
mysql>
SELECT * FROM developers;
+-------------+-----------------------+----------------+ | name | email | job | +-------------+-----------------------+----------------+ | Joe Smith | joesmith@gentoo.org | toolchain | | John Doe | johndoe@gentoo.org | portage | | Chris White | chriswhite@gentoo.org | documentation | | Sam Smith | samsmith@gentoo.org | amd64 | | Jane Doe | NULL | Outsourced job | +-------------+-----------------------+----------------+ 5 rows in set (0.00 sec)
Команда завершилась успешно, и мы мельком увидели, что могут делать пользовательские разрешения. Мы, однако же, также создали и учетную запись admin. Она была создана для того чтобы показать, что даже пользователи, которым предоставлены все права, все же могут иметь ограничения. Завершите работу MySQL и войдите под учетной записью admin.
user $
mysql -u admin -h localhost -p
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 7 to server version: 4.0.25 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql>
Для начала, мы попытаемся создать новую базу данных от учетной записи admin. Этот пользователь будет иметь права доступа схожие с учетной записью root в MySQL, и будет способен выполнить любые изменения выбранной базы данных gentoo. Это протестирует права доступа данного пользователя к главной базе данных MySQL. Вспомните, что ранее мы установили разрешения только для определенной базы данных.
mysql>
CREATE DATABASE gentoo2;
ERROR 1044: Access denied for user: 'admin@localhost' to database 'gentoo2'
В самом деле, пользователь admin не может создавать базы данных в основной базе данных MySQL, вопреки всем своим разрешениям к базе данных gentoo. Однако, мы все еще способны использовать учетную запись admin для изменения базы данных gentoo, как показано на этом примере вставки данных.
mysql>
USE gentoo;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> INSERT INTO developers VALUES('Bob Simmons', 'bobsimmons@gentoo.org', 'python'); Query OK, 1 row affected (0.08 sec)
Пользователь admin может получить доступ к базе данных по желанию. Иногда, мы должны избавиться от пользовательских разрешений. Примером может быть все что угодно, от пользователя, вызывающего проблемы, до уволенного сотрудника. Давайте рассмотрим как отключить пользовательские разрешения командой REVOKE
.
Удаление Прав Доступа Пользователя Командой REVOKE
Команда REVOKE
позволяет нам запретить доступ пользователю. Мы можем запретить или все права на доступ, или определенные права. В действительности, формат весьма схож с командой GRANT
.
КОД Синтаксис REVOKE
REVOKE [privileges] ON database.* FROM '[user]'@'[host]';
Здесь, параметры объясняются в разделе команды GRANT
. Однако же, в этом разделе, мы собираемся запретить пользователю доступ полностью. Давайте предположим, мы обнаружили, что учетная запись guest вызывает некоторые проблемы с безопасностью. Мы решаем отозвать все привилегии. Мы заходим под учетной записью root и делаем то, что необходимо.
mysql>
REVOKE ALL ON gentoo.* FROM 'guest'@'localhost';
Query OK, 0 rows affected (0.00 sec)
Заметка
В данном случае, права доступа пользователя достаточно просты, поэтому их удаление из базы данных не является проблемой. Однако, в более общем случае, вы, скорее всего, использовали бы *.* вместо gentoo.* для того чтобы удалить права доступа пользователя ко всем другим базам данных.
Давайте теперь выйдем и попытаемся зайти в качестве пользователя guest.
user $
mysql -u guest -h localhost -p
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 9 to server version: 4.0.25 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql>
Хотя мы и были способны выполнить вход, наши права доступа к gentoo теперь исчезли.
mysql>
USE gentoo;
ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'
И наш проблемный пользователь больше не может получить доступ к базе данных gentoo. Пожалуйста, заметьте, что пользователь все еще может выполнить вход. Это потому что он остается в основной базе данных MySQL. Давайте рассмотрим как полностью удалить учетную запись командой DELETE
и взглянем на таблицу пользователей MySQL.
Удаление Учетных Записей с Использованием DELETE
Таблица пользователей MySQL является перечислением всех пользователей и информации о них. Убедитесь, что вы выполнили вход под root. Затем продолжайте и используйте основную базу данных MySQL.
DROP USER will delete the record in the user table and all privilege tables. Let’s go ahead and do that:
mysql>
DROP USER 'guest'@'localhost';
Query OK, 1 row affected (0.07 sec)
Кажется, сработало на отлично. Давайте это протестируем, выйдя и попытаясь войти как пользователь guest.
user $
mysql -u guest -h localhost -p
Enter password: ERROR 1045: Access denied for user: 'guest@localhost' (Using password: YES)
Наш пользователь успешно удален!
Заключение
В то время как это руководство сфокусировано, в основном, на настройке MySQL из командной строки, доступно несколько альтернатив с графическим интерфейсом:
- phpMyAdmin — Популярный инструмент администрирования MySQL, основанный на php.
- mysqlnavigator — Интерфейс QT к MySQL.
- gmyclient — MySQL клиент, основанный на GNOME.
- knoda — клиент MySQL для KDE.
Это завершает вводное руководство к MySQL. Я надеюсь это дало вам лучшее понимание основ MySQL и настройки базы данных.
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Chris White, Shyam Mani, Xavier Neys
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article’s associated history page.