01
- Пособия для начинающих и продолжающих
- Введение
- Начальная настройка MySQL
- База данных:
- Таблицы:
- Проверяем, есть ли база данных на сервере
- Типы данных в MySQL
- Подключение к серверу и создание новой базы
- Через консоль
- Через phpMyAdmin
- Необходимый минимум для связи с сервером
- Экспорт, Импорт
- Как установить и использовать MySQL Workbench
- Создаём новую базу
- Создание базы данных в MySQL
- Устанавливаем базу данных
- Удаление базы данных
- Через консоль
- Через phpMyAdmin
- Работа с командой UPDATE — как обновить данные в таблице MySQL
- Как создавать таблицы в MySQL (Create Table)
- Сброс пароля root в MySQL
- Создание нового пользователя и настройка прав в MySQL
- Подготовка системы
- Подключение по SSH
- Настройка брандмауэра в Ubuntu
- Тестирование MySQL
- Как создать первичные и внешние ключи MySQL
- Создание облачного сервера
- Insert в MySQL — добавление данных в таблицу
- ALTER TABLE — изменение таблицы в SQL
- Удаление MySQL
- Подготовка
- Что понадобится
- Настройка аутентификации и управление пользователями
- Аутентификация по паролю
- Дополнительный пользователь (опционально)
- Как установить MySQL на Windows
- Что дальше
- Настройка и проверка доступа к базе данных
- Через консоль
- Через phpMyAdmin
- Как установить и настроить MySQL в Ubuntu 20
- Заключение
Пособия для начинающих и продолжающих
Сделали подборку из 6 учебников по MySQL, которые будут полезны как для старта, так и развития навыков работы с СУБД и SQL-запросами.
MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.
Введение
В этой небольшой инструкции мы покажем, как создать новую базу данных в MySQL несколькими способами, как добавить пользователей и выдать им полномочия на доступ к базе.
В каждом проекте мы обычно храним все данные либо во внутренней памяти браузера, либо в текстовых файлах на компьютере или на сервере. Это хорошо работает в простых проектах, когда нужно запомнить несколько десятков строк или чисел. Но в полноценных проектах, где обрабатываются сотни и тысячи записей, так почти никто не делает — вместо этого программисты используют базы данных.
Сегодня мы сделаем первый шаг на этом пути — установим на сервер базу данных MySQL и убедимся, что она работает.
Начальная настройка MySQL
Запустите скрипт для повышения безопасности MySQL:
sudo mysql_secure_installationСистема запросит разрешение на установку плагина валидации паролей. Этот плагин проверяет безопасность пароля и позволяет пользователю ставить только достаточно защищенные пароли.
Если вы хотите установить этот плагин, введите в консоли y или Y.
Есть три уровня защищенности пароля: LOW (0), MEDIUM (1) и STRONG (2). Чтобы задать уровень пароля, нажмите соответствующую цифру, например, 2 для сильного пароля. Даже если вы на предыдущем шаге не установили плагин, система запросит вас поставить пароль для пользователя root — введите его два раза.
Если плагин установлен, будет показан уровень надёжности пароля Estimated strength of the password.
Далее система задаст ряд вопросов: хотите ли вы использовать этот пароль для продолжения работы, удалить ли всех анонимных пользователей, запретить удаленно подключаться как root, удалить тестовую БД и доступ к ней, перезагрузить таблицы с привилегиями. Вы можете ответить на все эти вопросы положительно: y, Y или Enter.
Если в выводе появится All done!, то пароль для root успешно настроен.
По умолчанию вход в MySQL в Ubuntu не будет происходить по паролю. Чтобы настроить подключение через пароль, следуйте инструкции ниже.
База данных:
Если вы при вводе команды допустили ошибку -> поставьте знак ;
После как подключились к серверу по ssh, заходим в базу данных root:
–uLogin –pParol или –uLogin –p
Enter и вводим пароль:
Если сервер MySQL находится на удалённом хосте его можно указать с помощью ключа -h: с учетом что там настроенное внешнее подключение.
u username p h vashsaytru
Enter и вводим пароль:
Очень полезная команда – status, которая выводит информацию об используемой версии MySQL и многое другое:
Показать все базы:
Какая в данный момент база используется:
CREATE DATABASE Ima-Bazi;
DROP DATABASE Ima-Bazi;
Выйти из mysql:
нажать Ctrl и C или прописать \q
Таблицы:
Создать таблицу:
Удалить таблицу:
SELECT * FROM imya_tablici;
писок всех пользователей mysql:
Для MySQL 5.7.6 и новее, а также MariaDB 10.1.20 и новее используйте следующую команду
Создать пользователя с привилегиями но без Grant, который не сможет давать права пользователям
grant all privileges on *.* to 'admin'@'localhost' identified by 'parol'
Создаем пользователя со всеми привилегиями как у root с Grant который добавляет базы, пользователей и привилегии им выдает
grant all privileges on *.* to 'admin'@'localhost' identified by 'parol' WITH GRANT OPTION;
Для MySQL 5.7.6 и новее, а также MariaDB 10.1.20 и новее используйте следующую команду.
ALTER USER IDENTIFIED BY
Меняем пароль у пользователя
SET PASSWORD FOR 'user-name'@'localhost' = PASSWORD('NEW_USER_PASSWORD');Перезагрузите привилегии:
DROP USER 'LOgin'@'localhost';
Проверяем, есть ли база данных на сервере
Некоторые виртуальные серверы уже идут в комплекте с установленной базой данных MySQL, и в этом случае ничего дополнительно устанавливать не придётся. Проверить, если ли MySQL на сервере, можно командой mysql -V:

Сервер ответил, что не знает этой команды, — это значит, что база MySQL не установлена.
Дальше мы будем использовать команды установщика для Ubuntu, потому что именно эта операционная система стоит на нашем сервере. Если у вас другая версия линукса, замените наши команды установки apt install на свои.
Типы данных в MySQL
В этой инструкции рассказываем про основные типы данных в MySQL и даем советы, где лучше использовать тот или иной тип.
Подключение к серверу и создание новой базы
Через консоль
Подключимся к удаленному серверу MySQL:
mysql -u root -h 82.202.199.34 -pПосле ввода этой команды нужно ввести пароль от пользователя root, который вы указывали на этапе установки и первоначальной настройки СУБД.
Для начала посмотрим, какие уже есть созданные базы данных:
show databases; +--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+Это все служебные базы. Мы не будем их трогать, а создадим свою БД. Для этого выполним команду для создания новой базы данных MySQL:
CREATE DATABASE my_db_cli;Снова посмотрим список всех баз:
show databases;Видим, что наша БД появилась в списке:
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db_cli |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+Через phpMyAdmin
Чтобы указать сервер для подключения, нужно отредактировать файл config.inc.php. В зависимости от вашей ОС или дистрибутива Linux, этот файл может находиться в разных директориях, поэтому мы не будем указывать конкретный путь. Откройте файл и добавьте в него строчку:
$cfg['Servers'][$i]['host'] = '82.202.199.34';Создадим еще одну базу. Для этого над списком БД нажмите кнопку «Создать БД».

Укажем имя новой базы, а кодировку оставим по умолчанию. В нашем примере это:
utf8mb4_unicode_ci.
База данных создана, и теперь она появилась в списке слева:

Необходимый минимум для связи с сервером
Чтобы сервером можно было управлять со своего домашнего компьютера, нам понадобится настроить SSH — программу для безопасной связи между компьютерами по сети. Так как почти все серверы в интернете работают на линуксе без графической оболочки, команды для управления будем вводить в терминале (или командной строке, кому какое название больше нравится).
Перед тем как продолжить, проверяем, что у нас работает доступ к серверу по SSH:

Базу данных необязательно устанавливать на сервер — на домашнем компьютере она тоже будет работать. Самый простой способ это сделать — поставить виртуальную машину с Ubuntu и установить базу там. Единственный минус — удалённо поработать с такой базой будет сложно, но для тренировки и изучения SQL-запросов этого хватит.
Экспорт, Импорт
Для экспорта существует утилита, которая позволяет сделать бэкап базы данных в традиционном SQL-формате – mysqldump. Общий вид в командной строке:
Ввести пароль пользователя.
Файл сохраняется в папку пользователя или root поэтому прописываем перед файлом созданную или существующую папку куда сохраняем файл экспорта базы. Рекомендуется экспортировать файл с датой чтобы потом не путаться.
Для импорта сначала загружаете дамп на сервер. Дамп должен быть в формате .sql Ниже показано импорт того же файла который вы прежде экспортировали.
Как установить и использовать MySQL Workbench
Что за инструмент MySQL Workbench и как с ним работать: как создавать таблицы, добавлять в них поля и указывать их свойства, а также как экспортировать базу данных
Создаём новую базу
Последнее, что нам осталось сделать, — создать новую базу данных.
Все команды в MySQL называются запросами и пишутся внутри её собственной командной строки. Для перехода в неё пишем команду mysql -u root:

У нас поменялся внешний вид приветствия в командной строке: вместо имени пользователя и текущей папки мы видим строку mysql> — это значит, что мы сейчас общаемся с базой данных и она готова принимать и выполнять команды.Создадим новую базу с названием thecodeDB командой CREATE DATABASE:

Обратите внимание на точку с запятой в конце команды — без неё база данных не поймёт, что запрос закончился, и будет ждать продолжения:

Убедимся, что база создана, — выполним команду SHOW DATABASES;

Мы используем рабочий сервер для Nextcloud, поэтому на нём уже есть несколько баз данных, но наша база тоже теперь есть в списке — это значит, что MySQL про неё знает и может с ней работать.
Создание базы данных в MySQL
Инструкция о том, как создать новую базу данных в MySQL несколькими способами, добавить пользователей и выдать им полномочия на доступ к базе.
Устанавливаем базу данных
Установим сразу и серверную, и клиентскую части базы данных MySQL. Серверная отвечает за обработку и хранение данных, а клиентская — за отправку запросов на сервер. Теоретически можно было бы обойтись одной серверной частью, но мы ставим клиентскую, чтобы сразу получить возможность отправлять запросы в базу и видеть результат.
Для установки обеих частей выполним команду apt install mysql-server mysql-client. Сервер соберёт данные об установке и скажет, что ему понадобится около 250 мегабайт на диске — для установки нужно будет ввести английскую букву «y» и нажать энтер:

Когда установка закончится, снова проверим, знает ли сервер о том, что у него теперь есть MySQL, командой mysql -V:

Сервер ответил, что у нас установлена версия 8.0.29, — это значит, что мы всё сделали правильно.
Удаление базы данных
Теперь покажем, как удалить созданные БД. Учтите, что при удалении базы также удаляются все таблицы с данными в ней, поэтому будьте аккуратны и перепроверяйте названия баз, которые собираетесь удалить.
Через консоль
drop database my_db_cli;Через phpMyAdmin
Выбираем нужную БД, переходим на вкладку «Операции» и нажимаем «Удалить базу данных».

Работа с командой UPDATE — как обновить данные в таблице MySQL
9 подробных примеров о том, как обновить данные в MySQL с помощью UPDATE.
Как создавать таблицы в MySQL (Create Table)
О типах данных, атрибутах, ограничениях и об изменениях в уже созданной таблице.
Сброс пароля root в MySQL
3 простых способа сброса пароля для root-пользователя в MySQL
Создание нового пользователя и настройка прав в MySQL
Как работать с пользователями в MySQL: создавать и удалять учетные записи, предоставлять и отзывать привилегии, а также просматривать права доступа.
Подготовка системы
Перед установкой MySQL сервер нужно подготовить: подключиться к нему по SSH и настроить брандмауэр с помощью UFW.
Подключение по SSH
Для подключения по SSH в терминале локальной машины введите:
ssh root@server_ipПароль для root-пользователя, который требуется при аутентификации, можно найти на вкладке Консоль.
Настройка брандмауэра в Ubuntu
После подключения настройте брандмауэр так, чтобы он разрешал подключения к серверу по SSH.
Обновите индекс пакетов:
sudo apt updateУстановите утилиту UFW для настройки брандмауэра:
sudo apt install ufwПроверьте список профилей UFW:
sudo ufw app listВ списке должен быть указан OpenSSH:
Available applications: OpenSSHРазрешите подключения по SSH:
sudo ufw allow OpenSSHsudo ufw enableУбедитесь, что брандмауэр активен, и включены профили OpenSSH:
sudo ufw statusВывод будет выглядеть так:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6) Теперь можно переходить к установке и настройке MySQL на облачном сервере.
Установить MySQL на Ubuntu 20.04 можно через пакет:
sudo apt install mysql-serverНа момент публикации инструкции по умолчанию ставится версия 8.0.23.
Вы можете проверить установленную версию:
mysql --versionТестирование MySQL
Посмотрите статус MySQL:
systemctl status mysqlВ выводе должен быть индикатор зеленого цвета и статус active:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-03-22 09:57:07 UTC; 2h 39min ago Main PID: 2630 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1107) Memory: 331.4M CGroup: /system.slice/mysql.service └─2630 /usr/sbin/mysqldПо какой-то причине сервис может быть не активен. В таком случае запуск MySQL в Ubuntu происходит через команду:
sudo systemctl start mysqlsudo mysqladmin version -u root -pЕсли вывод выглядит подобным образом, то MySQL успешно установлена и готова к использованию:
mysqladmin Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.23-0ubuntu0.20.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 2 hours 47 min 34 sec
Threads: 2 Questions: 28 Slow queries: 0 Opens: 141 Flush tables: 3 Open tables: 60 Queries per second avg: 0.002Как создать первичные и внешние ключи MySQL
В этой инструкции рассказываем про первичный и внешний ключи SQL, зачем они нужны и как их создать различными способами.
Создание облачного сервера
Создать облачный сервер с операционной системой Ubuntu 20.04 можно в Облачной платформе Selectel.
Откройте панель управления, перейдите в раздел Серверы и нажмите Создать сервер.

В качестве источника выберите в списке Ubuntu 20.04.

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

Insert в MySQL — добавление данных в таблицу
10 способов использования команды Insert в MySQL.
ALTER TABLE — изменение таблицы в SQL
Рассказываем о команде ALTER TABLE и учим вносить с ее помощью изменения в таблицы и столбцы.
Удаление MySQL
Если по какой-то причине вам нужно удалить MySQL из Ubuntu 20.04, сначала остановите сервисы:
sudo systemctl stop mysqlУдалите пакеты MySQL:
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*Удалите всех пользователей:
sudo deluser --remove-home mysqlsudo delgroup mysqlУдалите файлы базы данных, конфигурационные файлы и логи:
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysqlУдалите оставшиеся зависимости:
sudo apt-get autoremovesudo apt-get autocleanПодготовка
Мы будем работать с сервером, развернутым на виртуальной машине Selectel.
Что понадобится
Чтобы всё получилось, нам будут нужны:
Виртуальный сервер можно взять любой, где будет хотя бы 1 гигабайт памяти на диске для хранения данных. У нас не будет настолько большой базы данных, но этого размера точно хватит и для базы, и для установки всех нужных программ.
Мы возьмём сервер из статьи про облачное хранение данных, но то же самое можно сделать и на самом простом хостинге для статичного сайта.
Настройка аутентификации и управление пользователями
Аутентификация по паролю
Для root-пользователя аутентификация в MySQL происходит с использованием плагина auth_socket. Чтобы при подключении запрашивался пароль, нужно изменить плагин.
Войдите в оболочку MySQL:
sudo mysqlПосмотрите, какой плагин используется:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;Для пользователя root используется auth_socket:

Назначьте пользователю root новый плагин caching_sha2_password. Также установите пароль того уровня надежности, который вы задали ранее (на шаге Базовая настройка MySQL) — это может быть, например, тот же самый пароль. Введите его вместо password:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';mysql> FLUSH PRIVILEGES;Проверьте, что для пользователя root плагин изменился на caching_sha2_password:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;Закройте командную строку MySQL:
mysql> exitДополнительный пользователь (опционально)
Вы можете создать дополнительного пользователя для работы с MySQL.
Если вы установили аутентификацию по паролю, изменилась команда для подключения к консоли MySQL:
mysql -u root -pЕсли у вас не установлена аутентификация по паролю, то для входа в MySQL используйте:
sudo mysqlСоздайте нового пользователя и поставьте пароль:
mysql> CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';Если вы хотите дать пользователю полный доступ к определенной базе данных, используйте:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';Закройте консоль MySQL:
mysql> exitКак установить MySQL на Windows
Об особенностях работы MySQL на ОС Windows, о создании пользователей, оптимальной настройке производительности и устранении неполадок.
Что дальше
Сейчас у нас на сервере есть своя база данных, настроенная и готовая к работе. В следующей статье мы попробуем её в деле — возьмём какой-нибудь наш старый проект и переделаем его под хранение данных в базе.
Настройка и проверка доступа к базе данных
Сейчас у нас есть только root-пользователь, который имеет полный доступ к серверу и может работать с любой БД. Нам нужно создать новых пользователей и выдать им полномочия, чтобы каждый мог работать только с одной базой.
Через консоль
Создадим нового пользователя:
CREATE USER 'user_cli'@'%' IDENTIFIED BY 'password';Знак процента означает, что пользователь может подключаться к серверу с любого хоста. Теперь выдадим этому пользователю полный доступ на базу my_db_cli:
GRANT ALL PRIVILEGES ON my_db_cli.* TO 'user_cli'@'%' WITH GRANT OPTION;Через phpMyAdmin

В следующем окне указываем имя пользователя, хост и пароль.

После создания пользователя сразу откроется экран настройки полномочий. Мы хотим выдать права только на определенную БД, поэтому перейдем на вкладку «База данных» и выберем нужную базу.

На следующем экране нужно указать привилегии. Мы хотим дать полный доступ к базе, поэтому выберем пункт «Отметить все».

mysql -u user_cli -h 82.202.199.34 -pПопробуем выбрать БД, к которой нет доступа:
use my_db_gui; ERROR 1044 (42000): Access denied for user 'user_cli'@'%' to database 'my_db_gui'Теперь выберем базу, к которой есть доступ и попробуем создать в ней таблицу:
use my_db_cli;
create table t(id int);Ошибок не возникло, значит полномочия настроены правильно.
Как установить и настроить MySQL в Ubuntu 20
MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.
Заключение
Вы узнали, как с помощью командной строки или phpMyAdmin можно выполнить создание новой БД в MySQL, как создавать пользователей и добавлять им права доступа.

