Skip to content

This article is available in Russian. An English version is on the way.Open the Russian page

MariaDB и MySQL: установка и пользователи

Установить MariaDB, пройти базовую защиту, создать базу и пользователя с правами только на неё.

Level
Beginner
Reading time
2 min read
Updated
Tested on
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Contents
  1. Установка
  2. Базовая защита
  3. База и пользователь
  4. Где настройки
  5. Проверьте результат
  6. Частые ошибки

В Debian и Ubuntu вместо MySQL обычно ставят MariaDB — совместимый форк с теми же командами и протоколом. Большинство приложений для MySQL работают с ней без изменений.

Установка

bash
$ apt update$ apt install -y mariadb-server$ systemctl enable --now mariadb$ mariadb --version

Базовая защита

bash
$ mariadb-secure-installation

В Ubuntu 22.04 команда называется mysql_secure_installation. Скрипт удаляет анонимных пользователей и тестовую базу, запрещает удалённый вход root. Root по умолчанию входит через unix_socket — без пароля, но только от системного root. Это безопасно, менять не обязательно.

База и пользователь

Для каждого приложения — своя база и свой пользователь с правами только на неё:

bash
$ mariadb
sql
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'app'@'localhost' IDENTIFIED BY 'надёжный-пароль';GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'localhost';FLUSH PRIVILEGES;

Для отчётов или бэкапов заведите отдельного пользователя только на чтение:

sql
CREATE USER 'reader'@'localhost' IDENTIFIED BY 'другой-пароль';GRANT SELECT, SHOW VIEW, LOCK TABLES, TRIGGER, EVENT ON appdb.* TO 'reader'@'localhost';

Где настройки

Основной файл — /etc/mysql/mariadb.conf.d/50-server.cnf. Там задаётся адрес (по умолчанию bind-address = 127.0.0.1) и размер буфера InnoDB. На небольшом сервере, где рядом работает приложение, оставьте под буфер примерно четверть памяти:

50-server.cnf, секция [mysqld]
[mysqld]bind-address = 127.0.0.1innodb_buffer_pool_size = 512M
bash
$ systemctl restart mariadb

Проверьте результат

bash
$ mariadb -u app -p -h 127.0.0.1 appdb -e 'SELECT CURRENT_USER();'$ ss -tlnp | grep 3306

Частые ошибки

  • «Access denied for user 'app'@'127.0.0.1'» — пользователь создан для хоста localhost (сокет), а приложение ходит по TCP. Подключайтесь к localhost или создайте пользователя и для 127.0.0.1.
  • Кракозябры вместо кириллицы — база или таблицы в latin1. Создавайте с utf8mb4 и указывайте charset в строке подключения.
  • MariaDB не стартует после правки конфига — смотрите journalctl -u mariadb -n 50, чаще всего опечатка или буфер больше доступной памяти.

Read to the end and the article counts toward your learning progress.

  • MariaDB
  • MySQL
  • СУБД
  • база данных
  • GRANT

Was this article helpful?