Skip to content

Instantly share code, notes, and snippets.

@llcawc
Created June 30, 2025 19:23
Show Gist options
  • Save llcawc/7e5371ac3bda4b17a8385a0ab06b92db to your computer and use it in GitHub Desktop.
Save llcawc/7e5371ac3bda4b17a8385a0ab06b92db to your computer and use it in GitHub Desktop.
Настройка MySql в Angie

Настройка MySql в Angie

Установка MySQL - mySql 8.4 MySQL Community Downloads

Установка через официальный репозиторий MySQL APT

Если в официальном репозитории Ubuntu нет версии MySQL 8.4, можно установить её из официального репозитория MySQL:

  1. Скачать файл с репозиторием на сайте dev.mysql.com/downloads/repo/apt/. Например, для Ubuntu 24.04 доступен пакет mysql-apt-config_0.8.34-1_all.deb
  2. Добавить конфигурацию репозитория в систему с помощью команды 
sudo dpkg -i _/PATH/version-specific-package-name_.deb
sudo dpkg -i mysql-apt-config_0.8.34-1_all.deb
  1. Выбрать версию MySQL в интерфейсе репозитория и сохранить конфигурацию.
sudo dpkg-reconfigure mysql-apt-config
  1. Обновить систему для нового репозитория: 
sudo apt update
  1. Установить MySQL с помощью команды 
sudo apt install -y mysql-server

[!danger] В процессе установки обязательно задать и запомнить пароль для root

MySQL автоматически запустится. Можно проверить статус службы с помощью команды:

sudo systemctl status mysql

Проверить установленную версию можно командой:

mysql --version

Запускаем скрипт безопасности

sudo mysql_secure_installation

Он выполняет несколько шагов для защиты вашей базы данных от потенциальных угроз.

[!i] Давайте разберем каждый шаг подробно:

  • При первом запуске инструмент попросит установить плагин валидации паролей. Потребуется выбрать тот уровень сложности пароля, который вам подходит. Для этого введите соответствующую цифру (1 или 2), а далее продолжите установку, согласно инструкции.
  • Установка пароля для root пользователя. На этом этапе скрипт запросит вас ввести текущий пароль для root пользователя MySQL. Если он еще не установлен, оставьте поле пустым и нажмите Enter. Затем он предложит вам установить новый пароль для root. Пароль для root пользователя дает полный доступ ко всем базам данных MySQL, поэтому он должен быть сложным и безопасным.
  • Удаление анонимных учетных записей. По умолчанию MySQL устанавливает анонимные учетные записи, которые позволяют входить в систему без указания имени пользователя или пароля. Это представляет уязвимость безопасности, поэтому скрипт предложит удалить эти учетные записи.
  • Отключение удаленного входа для root пользователя. Для повышения безопасности рекомендуется отключить удаленный доступ к root пользователю MySQL. Это означает, что root пользователь может входить в систему только локально, с сервера MySQL, а не удаленно через сеть.
  • Удаление тестовых баз данных и тестовых записей. MySQL устанавливает некоторые тестовые базы данных и записи по умолчанию, которые необходимы для тестирования, но представляют угрозу безопасности, если они остаются в продакшен среде. Скрипт предложит удалить их.
  • Перезагрузка привилегий (RELOAD PRIVILEGES). После завершения всех настроек скрипт перезагрузит привилегии MySQL, чтобы убедиться, что все изменения вступают в силу. Именно привилегии определяют, какие действия могут выполнять пользователи с объектами базы данных.

[!info] После установки рекомендуется сменить пароль для root.

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

Входим в оболочку mysql с пользователем "root" и вводим пароль:

sudo mysql -u root -p

полная команда для входа:

mysql -u 'пользователь' -p 'пароль' -h 'хост_или_ip_сервера_MySQL'
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 4 Server version: 5.7.32 MySQL Community Server (GPL) 

Copyright (c) 2000, 2020, 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. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql>

при необходимости даем команду и вводим новый паспорт для root:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '_new_password_';

Вот несколько полезных советов, которые следует помнить при использовании клиента mysql:

  • Клиентские команды (например, helpquit и clear) и ключевые слова в операторах SQL (например, SELECTCREATE TABLE и INSERT) не чувствительны к регистру.

  • Имена столбцов чувствительны к регистру. Имена таблиц чувствительны к регистру на большинстве Unix-подобных платформ, но не чувствительны к регистру на платформах Windows. Чувствительность к регистру при сравнении строк зависит от используемой сортировки символов. В целом, рекомендуется рассматривать все идентификаторы (имена баз данных, имена таблиц, имена столбцов и т. д.) и строки как чувствительные к регистру. Подробности см. в разделах Чувствительность к регистру идентификаторов и Чувствительность к регистру при поиске строк.

  • Все команды заканчиваются точкой с запятой. Вы можете ввести свои SQL-инструкции в нескольких строках, нажав Enter в середине. Ввод точки с запятой (;), за которой следует Enter, завершает инструкцию SQL и отправляет ее на сервер для выполнения; то же самое происходит, когда инструкция заканчивается на \g или \G (с последним возвращаемые результаты отображаются вертикально). Однако клиентским командам (например, helpquit и clear) не требуется ограничитель.

Чтобы отключиться от сервера MySQL, введите QUIT или \q в командной строке клиента:

mysql> QUIT

смотрим версию сервера и дату

SELECT VERSION(), CURRENT_DATE;

смотрим все базы:

SHOW DATABASES;

создаём новую базу:

CREATE DATABASE имя_базы_данных;

создаём нового пользователя:

CREATE USER 'имя_пользователя'@'хост_или_IP_машины' IDENTIFIED BY 'пароль_пользователя';

при указании хоста для подключения к MySQL серверу можно не указывать @'хост_или_IP_машины' тогда по умолчанию будет символ процента (%) и создаваемый пользователь может соединяться с сервером MySQL с любого IP адреса или хоста.

Задаёт права пользователя для выполнения любых действий с созданной базой данных:

GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'хост_или_IP_машины';

Опция ALL указывает на то, что пользователю разрешаются любые действия с определённой БД. Полный список прав, которые можно выдавать пользователям с помощью команды GRANT.

Cоздаём суперюзера, т.е. обладающего глобальными привилегиями для осуществления различных действий со всеми БД на сервере:

GRANT ALL PRIVILEGES ON *.* TO 'имя_пользователя'@'хост_или_IP_машины';

Очищаем кэш MySQL сервера после установки и изменений привилегий:

FLUSH PRIVILEGES;

Выбор базы данных для работы:

USE имя_базы_данных;

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

SELECT USER(), DATABASE();

Удаляем базу данных:

DROP DATABASE имя_базы_данных;

удаляем пользователя:

DROP USER IF EXISTS имя_пользователя;

выводим на экран список всех существующих на текущем MySQL сервере пользователей:

SELECT User FROM mysql.user;

Если нужно посмотреть хосты, с которых пользователи могут коннектиться к серверу, и список привилегий:

SELECT User, Host, Grant_priv FROM mysql.user;

импортируем дамп базы данных на сервер MySQL из файла:

mysql -u 'имя_пользователя' -p'пароль' 'имя_базы_данных' < 'путь_и_имя_файла_дампа'

импортируем базу данных из архива:

gunzip > 'имя_файла_архива.sql.gz' | mysql -u 'user' -p'пароль' 'имя_базы_данных'

экспортируем базу данных с сервера MySQL в файл дампа:

mysqldump -u имя_пользователя -p имя_базы_данных > путь_и_имя_файла_дампа

выходим из консоли mysql:

exit

END

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment