doc_memo/docker/docker-mariadb.md

77 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Развертывание MariaDB (MySQL) в контейнере Docker
Создаем и запускаем контейнер с MariaDB. Т.к. при перезапуске контейнера данные из базы уничтожаются, то
пробросим из нее том с данными наружу во внешний каталог (том), в данном случае `/home/[user]/docker-data/maria-db/` :
```shell
sudo docker run --name MariaDB_11.1.2 --restart=always \
-e MYSQL_ROOT_PASSWORD=qwaseR12 \
-e TZ=Europe/Moscow \
-p 127.0.0.1:3306:3306 \
-v /home/[user]/docker-data/maria-db/:/var/lib/mysql \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-d mariadb:11.1.2
```
Для docker-compose это будет вот такой `docker-compose.ym`:
```yaml
version: "3.1"
services:
mariadb:
container_name: MariaDB_11.1.2
image: mariadb:11.1.2
volumes:
- /home/[user]/docker-data/maria-db:/var/lib/mysql
# ↓↓↓ это устанавливает часовой пояс как в системе, но сработает только под Linux:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- MARIADB_ROOT_PASSWORD=***
# - MARIADB_AUTO_UPGRADE=yes
# ↓↓↓ это устанавливает часовой пояс принудительно, и сработает и под MacOS, и под Windows
- TZ=Europe/Moscow
# ↓↓↓ всякие оптимизационные параметры устанавливаем вот так:
- sql-mode=""
- ft_min_word_len=1
- wait_timeout=600
- max_allowed_packet=1G
- innodb_buffer_pool_size=100M
- net_read_timeout=3600
- net_write_timeout=3600
ports:
- 127.0.0.1:3306:3306
command:
--bind-address=0.0.0.0
--skip_ssl=true
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
restart: always
```
Далее надо создать суперпользователя в базе данных. Для этого надо зайти в CLI (командную строку)
нашего контейнера, выполнив команду (в Docker Desktop под Windows или MacOS -- просто выбираем
контейнер в списке и нажимаем кнопку `CLI` или в новых версиях вкладка `exec`):
```shell
docker exec -it MariaDB_11.1.2 bash
```
После этого внутри контейнера войти в MariaDB:
```shell
mariadb -u root -p
```
Спросит пароль -- просто жмем `Enter`. Создаём супер-пользователя (например: `superdb_user`) командами:
```sql
CREATE USER 'superdb_user'@'%' IDENTIFIED BY 'secret-password';
GRANT ALL PRIVILEGES ON *.* TO 'superdb_user'@'%';
FLUSH PRIVILEGES;
exit;
```
После этого можно выйти из контейнера:
```shell
exit
```
Теперь можно коннектится к базе внутри контейнера точно так же как к базе установленным обычным образом.