Запуск 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