Контейнер MySQL под Windows 10
This commit is contained in:
parent
04cc286b6b
commit
db8732de61
8
README.md
Normal file
8
README.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Заметки и памятки по «граблям»
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
* [Расположение образов Docker](adjasting-docker.md)
|
||||||
|
* [Контейнер MySQL под Windows 10](mysql-in-windows10.md)
|
||||||
|
|
||||||
|
## Python
|
||||||
|
* [Утранение проблем при установке mysqlclient (подключение к MySQL/MariaDB](python-mysql.md)
|
114
mysql-in-windows10.md
Normal file
114
mysql-in-windows10.md
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
|
||||||
|
# Контейнер MySQL под Windows 10
|
||||||
|
|
||||||
|
Сначала надо перенастроить Dockers в _advansed_ режим и разрешить использовать experimental-контенеры. Для этого
|
||||||
|
* Щелкнуть в трее на значок **Docker** правой кнопокй мыши.
|
||||||
|
* Выбрать пункт _Settings_
|
||||||
|
* В блоке _Docker Engine_ в конфигурационный файл добавить `"experimental": true` (в старых версиях вкладка называется _Deamon_). Например получится вот так:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"registry-mirrors": [],
|
||||||
|
"insecure-registries": [],
|
||||||
|
"debug": true,
|
||||||
|
"experimental": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
* Во вкладке _Command line_ включить _Enable experimental features_ (в старых версиях, ту же настроку включаем во вкладке _Deamon_, надо включить _Advanced_)
|
||||||
|
|
||||||
|
|
||||||
|
## MySQL внутри docker-контейнера
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run --name mysql -d \
|
||||||
|
-e MYSQL_ROOT_PASSWORD=this_is_password \
|
||||||
|
-e MYSQL_ROOT_HOST=1.1.1.1 \
|
||||||
|
-p 3306:3306 \
|
||||||
|
mysql:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Вместо `1.1.1.1` надо указать действительный **ip** хоста на котором работает dockers, иначе невозможно
|
||||||
|
будет коннектиться в MySQL снаружи контейнера.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker inspect mysql
|
||||||
|
```
|
||||||
|
|
||||||
|
Останавливать, удалить контейнер и удалить образ контейнера:
|
||||||
|
```bash
|
||||||
|
docker stop mysql
|
||||||
|
docker rm mysql
|
||||||
|
docker rmi mysql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Сохраняем данные базы при перезапуске контейнера
|
||||||
|
|
||||||
|
Чтобы при перезапуске контейнера данные из базы сохранялись, а не уничтожались вместе
|
||||||
|
с контейнером, их нужно хранить во внешнем для контенера каталоге хост-машины, и заставить
|
||||||
|
контейнер монтировать эту внешнюю для него папку внутрь себя. Каталог можно
|
||||||
|
создать эту папку вручную:
|
||||||
|
```bash
|
||||||
|
mkdir mysql_data
|
||||||
|
```
|
||||||
|
|
||||||
|
или командой doсker:
|
||||||
|
```bash
|
||||||
|
docker volume create --name mysql_data
|
||||||
|
```
|
||||||
|
|
||||||
|
Запуск контейнера с монтированием этой папки выглядит так:
|
||||||
|
```bash
|
||||||
|
docker run --name mysql -d \
|
||||||
|
-e MYSQL_ROOT_PASSWORD=this_is_password \
|
||||||
|
-e MYSQL_ROOT_HOST=1.1.1.1 \
|
||||||
|
-p 3306:3306 \
|
||||||
|
-v mysql_data:/var/lib/mysql \
|
||||||
|
mysql:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## MySQL внутри сборки docker-compose
|
||||||
|
|
||||||
|
В последних сборках MySQL Server (8.0.20) изменена процедура авторизации и подключение клиентов
|
||||||
|
осуществятся через SSL-шифрование (SHA2 или SHA256). Это может затруднить работу старых приложений
|
||||||
|
(или просто лень создавать и обмениваться ключами шифрования). Для того чтобы переключить механизм
|
||||||
|
авторизации в режим предыдущих версий (_native_mysql_password_) в конфигурационный файл MySQL
|
||||||
|
`/etc/mysql/my.cnf`, в блок `[mysqld]` нужно добавить строчки:
|
||||||
|
```buildoutcfg
|
||||||
|
bind-address = 0.0.0.0
|
||||||
|
skip_ssl = true
|
||||||
|
```
|
||||||
|
|
||||||
|
Внутри контейнера эти настройки можно менять через yml-файлы для **docker-compose**. Например:
|
||||||
|
```yaml
|
||||||
|
version: "2.1"
|
||||||
|
services:
|
||||||
|
database:
|
||||||
|
container_name: mysql8_v1
|
||||||
|
image: mysql:latest
|
||||||
|
volumes:
|
||||||
|
# - "d:/docker-compose/mysql/cfg:/etc/mysql"
|
||||||
|
- "d:/docker-compose/mysql/data:/var/lib/mysql"
|
||||||
|
environment:
|
||||||
|
- "MYSQL_ROOT_PASSWORD=this_is_password"
|
||||||
|
- "MYSQL_ROOT_HOST=1.1.1.1"
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
command: --bind-address="0.0.0.0" --skip_ssl="true"
|
||||||
|
```
|
||||||
|
|
||||||
|
Обратите внимание, данные базы внутри контейнера будут хранится в примонтированном
|
||||||
|
каталоге `d:/docker-compose/mysql/data` (каталог надо создать заранее)
|
||||||
|
|
||||||
|
Запуск docker-compose (контейнерной сборки):
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
ключ `-d` -- detached mode, т.е. запуск в фоновом режиме (терминал хост-машины не получает
|
||||||
|
информацию на вход и не отображает вывод).
|
||||||
|
|
||||||
|
Остановка docker-compose:
|
||||||
|
```bash
|
||||||
|
docker-compose down
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue
Block a user