Bash скрипт для создания пользователя по умолчанию в docker MySQL - PullRequest
0 голосов
/ 05 февраля 2020

Я разрабатываю «скрипт одного файла» для запуска MySQL базы данных внутри Docker и много полезных мыслей. Сценарий должен создать контейнер с MySQL и после этого создать нового пользователя с максимальными привилегиями.

Проблема возникает, когда я пытаюсь подключиться к командной строке MySQL из сценария bash . Часть сценария:

#!/bin/bash

mysqlContainerName=project-mysql
mysqlRootUsername=root
mysqlRootPassword=root_pass
mysqlUsername=db_user
mysqlPassword=db_pass
mysqlDb=project_db

echo -e "Creating container \e[31m$mysqlContainerName\e[0m"
docker run --rm -d \
  --name=$mysqlContainerName \
  --network api-network \
  -p 3306:3306 \
  -v /opt/docker-data/mysql-volumes:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=$mysqlRootPassword \
  -e MYSQL_DATABASE=$mysqlDb \
  -t mysql:8.0.19

docker exec $mysqlContainerName \
  mysql -h 127.0.0.1 -P 3306 --protocol=tcp \
  -uroot -p$mysqlRootPassword -e "CREATE USER '$mysqlUsername'@'localhost' IDENTIFIED BY 
'$mysqlPassword';"

Итак, контейнер успешно создан, но все время появляется сообщение об ошибке: ОШИБКА 2003 (HY000): не удается подключиться к MySQL сервер на 127.0.0.1 (111) Есть предложения?

1 Ответ

0 голосов
/ 05 февраля 2020

Итак, после нескольких часов поиска я нашел решение. Добавлен bash - c параметр и в кавычки подключение к MySQL и запрос.

docker exec $mysqlContainerName bash -c "mysql -h172.21.0.1 -P 3306 --protocol=tcp -u$mysqlRootUsername -p$mysqlRootPassword -e \"CREATE USER '$mysqlUsername'@'localhost' IDENTIFIED BY '$mysqlPassword';\"; exit;"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...