Запуск MariaDB через Docker

Иногда требуется запустить СУБД MariaDB на сервере. Ниже описана инструкция, как запустить MariaDB через Docker.

Для начала создайте сеть, в которой будет находится СУБД Mysql со статическим IP адресом. Сеть нужно создать, т.к. стандартная сеть docker не дает возможности установить статический IP адрес у контейнера.

docker network create -d bridge --subnet=172.20.0.0/16 dockernet -o "com.docker.network.bridge.name"="dockernet"

Создание хранилища для базы данных.

docker volume create mariadb_data

Запуск контейнера Mysql

docker run -d -e MYSQL_ROOT_PASSWORD=mysqlrootpassword --name mariadb --log-driver=journald --restart=unless-stopped -v mariadb_data:/var/lib/mysql --ip=172.20.0.5 --network="dockernet" mariadb:10.4.8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --sql-mode="" --ft_min_word_len=1 --bind-address=172.20.0.5 --wait_timeout=600 --max_allowed_packet=1G --innodb_buffer_pool_size=100M --net_read_timeout=3600 --net_write_timeout=3600

Параметры --restart:
unless-stopped - будет останавливаться при перезапуске системы
always - будет автоматически запускаться при старте системы

Mysql будет запущен на 172.20.0.5:3306

Пароль mysqlrootpassword поменяйте на другой

или создайте скрипт

Создайте файл /root/mysql.restart.sh и выполните его

#!/bin/bash

docker network create -d bridge --subnet=172.20.0.0/16 dockernet -o "com.docker.network.bridge.name"="dockernet"

sleep 2

docker stop mariadb

sleep 2

docker rm mariadb

sleep 2

docker run -d -e MYSQL_ROOT_PASSWORD=HvJTPTgxwJ6i2n6R --name mariadb \
        --log-driver=journald --restart=unless-stopped -v mariadb_data:/var/lib/mysql \
        --ip=172.20.0.5 --network="dockernet" mariadb:10.4.8 \
        --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci \
        --sql-mode="" --ft_min_word_len=1 --bind-address=172.20.0.5 --wait_timeout=600 \
        --max_allowed_packet=1G --innodb_buffer_pool_size=100M --net_read_timeout=3600 --net_write_timeout=3600

Настройте пользователя mysql для удаленного подключения

docker exec -it mariadb mysql

Выполните команды:

SELECT host, user, password FROM mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysqlrootpassword';
FLUSH PRIVILEGES;
quit

Перезапустите контейнер

docker stop mariadb
docker start mariadb