Как запустить сценарий SQL при каждой инициализации MySQL? - PullRequest
0 голосов
/ 15 июня 2019

Я хотел бы запустить скрипт SQL при инициализации MySQL.Этот скрипт имеет в основном несколько команд UPDATE и запускается при каждой инициализации.По сути, идея заключается в том, чтобы обновлять пароли Root и User при каждой инициализации, используя учетные данные хранилища, которые получаются при каждом запуске базы данных.База данных MySQL развертывается в контейнере Docker.

В этом сценарии существует ли способ предустановки сценария SQL, который можно запускать при каждой инициализации базы данных в контейнере Docker?Если да, пожалуйста, дайте нам пример того, как это осуществить.Я использую docker-entrypoint.sh и foreground.sh для некоторых настроек в таком контейнере.

1 Ответ

0 голосов
/ 16 июня 2019

mysqld принимает параметр, который задает сценарии инициализации, и вы можете использовать его.

докер-compose.yml

version: "3.3"

services:
  db:
    image: mariadb:10.1
    environment:
      - MYSQL_ROOT_PASSWORD
    volumes:
      - ./init.sql:/script/init.sql
    command: "--init-file /script/init.sql"

init.sql

UPDATE mysql.user SET authentication_string=PASSWORD("mihai") WHERE USER="root";
UPDATE mysql.user SET plugin="mysql_native_password";

.env

MYSQL_ROOT_PASSWORD=rootpassword

Запустите контейнер и проверьте его:

docker-compose up -d
docker-compose exec db mysql -hlocalhost -uroot -pmihai
select plugin from mysql.user where USER='root';

Вы видите, что плагин также был обновлен, поэтому оба сценария работали.

Вы также можете удалить команду и выполнить проверку с использованием оригинального пароля. Обязательно удаляйте тома между запусками.

...