MariaDB: Установка и настройка

MariaDB: Установка и настройка

Инструкция по установке и первичной настройке #MariaDB.

Репозиторий

  • Скачать и установить ключ репозитория:
1
curl -fsSLo '/etc/apt/keyrings/mariadb.gpg' 'https://mariadb.org/mariadb_release_signing_key.pgp'
  • Создать файл репозитория /etc/apt/sources.list.d/mariadb.sources со следующим содержимым:
1
v='11.4'; . '/etc/os-release' && echo -e "X-Repolib-Name: MariaDB\nEnabled: yes\nTypes: deb\nURIs: https://mirror.netcologne.de/mariadb/repo/${v}/${ID}\n#URIs: https://mirror.yandex.ru/mirrors/mariadb/repo/${v}/${ID}\nSuites: ${VERSION_CODENAME}\nComponents: main\nArchitectures: $( dpkg --print-architecture )\nSigned-By: /etc/apt/keyrings/mariadb.gpg\n" | tee '/etc/apt/sources.list.d/mariadb.sources' > '/dev/null'

Установка

  • Установить пакеты:
1
apt update && apt install --yes mariadb-server && systemctl stop mariadb.service

Настройка

В этом разделе приведена конфигурация с моими предпочтениями.

Основная конфигурация

  • Создать файл /etc/mysql/mariadb.conf.d/99-server.local.cnf для конфигурации mariadbd со следующим содержимым:
mariadb.server.local.cnf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[server]

[mariadbd]

# -------------------------------------------------------------------------------------------------------------------- #
# BASIC SETTINGS
# -------------------------------------------------------------------------------------------------------------------- #

bind_address = 127.0.0.1
port = 3306
datadir = /var/lib/mysql
skip_name_resolve = on

# -------------------------------------------------------------------------------------------------------------------- #
# FINE TUNING
# -------------------------------------------------------------------------------------------------------------------- #

key_buffer_size = 128M
max_allowed_packet = 1G
max_connections = 100
myisam_recover_options = BACKUP
table_cache = 64
thread_cache_size = 8
thread_stack = 192K

# -------------------------------------------------------------------------------------------------------------------- #
# LOGGING
# -------------------------------------------------------------------------------------------------------------------- #

log_error = /var/log/mysql/error.log
log_slow_query_file = /var/log/mysql/mariadb-slow.log

# -------------------------------------------------------------------------------------------------------------------- #
# CHARACTER SETS
# -------------------------------------------------------------------------------------------------------------------- #

character_set_collations = utf8mb4=uca1400_ai_ci
character_set_server = utf8mb4

# -------------------------------------------------------------------------------------------------------------------- #
# INNODB
# -------------------------------------------------------------------------------------------------------------------- #

innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:2G:autoextend
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 256M
innodb_log_file_size = 512M
  • Создать файл /etc/mysql/mariadb.conf.d/99-mariadb-clients.local.cnf для конфигурации клиентов со следующим содержимым:
mariadb.mariadb-clients.local.cnf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[mariadb-client]

[mariadb-upgrade]

[mariadb-admin]

[mariadb-binlog]

[mariadb-check]

[mariadb-dump]

quick
quote_names
single_transaction

[mariadb-import]

[mariadb-show]

[mariadb-slap]
  • Удалить файлы в директории /var/lib/mysql и инициализировать стандартные базы данных:
1
rm -rf /var/lib/mysql/* && mariadb-install-db --user='mysql' && systemctl start mariadb.service
  • Запустить скрипт безопасной установки:
1
mariadb-secure-installation && systemctl restart mariadb.service
  • Создать пользователя root для подключения 127.0.0.1 и с любых хостов (%):
1
 p='PASSWORD'; echo "create user if not exists 'root'@'127.0.0.1' identified by '${p}'; grant all privileges on *.* to 'root'@'127.0.0.1' with grant option; create user if not exists 'root'@'%' identified by '${p}'; grant all privileges on *.* to 'root'@'%' with grant option; flush privileges;" | mariadb --user='root' --password