2023-10-29 20:50:27 +03:00
|
|
|
|
# Развертывание 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
|
2023-10-29 20:59:14 +03:00
|
|
|
|
# ↓↓↓ всякие оптимизационные параметры устанавливаем вот так:
|
|
|
|
|
- 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
|
2023-10-29 20:50:27 +03:00
|
|
|
|
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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Теперь можно коннектится к базе внутри контейнера точно так же как к базе установленным обычным образом.
|