MariaDB в контейнере

This commit is contained in:
Sergei Erjemin 2023-10-29 20:50:27 +03:00
parent 75091a9e06
commit 449ad9eaca
4 changed files with 71 additions and 2 deletions

View File

@ -1,8 +1,9 @@
# Памятки по «граблям» и просто полезные заметки, инструкции и самописные скрипты и доки
## Docker
* [Расположение образов Docker](adjasting-docker.md)
* [Контейнер MySQL под Windows 10](mysql-in-windows10.md)
* [Расположение образов Docker](docker-adjasting.md)
* [Контейнер MariaDB/MySQL](docker-mariadb.md)
* [Контейнер MySQL под Windows 10](docker-mysql-in-windows10.md)
## Python
* [Устранение проблем при установке mysqlclient (подключение к MySQL/MariaDB)](python-mysql.md)

68
docker-mariadb.md Normal file
View File

@ -0,0 +1,68 @@
# Развертывание 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
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
```
Теперь можно коннектится к базе внутри контейнера точно так же как к базе установленным обычным образом.