Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо моят скрипт docker-entrypoint-initdb.d (както е посочен в docker-compose.yml) не се изпълнява, за да инициализира ново копие на MySQL?

Дяволът се крие в детайлите...

Имате двойна дефиниция на root във вашите env vars. root потребителят се създава по подразбиране с парола от MYSQL_ROOT_PASSWORD . След това искате да създадете втори „нормален“ потребител... с точно същото име и парола (т.е. с MYSQL_USER и MYSQL_PASSWORD )

Ако погледнете внимателно дневника си при стартиране, ще видите грешка

db_1       | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'

Това всъщност спира по-нататъшната обработка на вашите init файлове в docker-entrypoint-initdb.d и продължава с останалата част от процеса на стартиране на изображението (т.е. рестартиране на mysql след инициализация на временен сървър).

Просто пуснете MYSQL_USER и MYSQL_PASSWORD във вашите env vars или задайте потребител, различен от root и вие незабавно ще видите вашите init файлове обработени (не забравяйте отново да изпразните директорията си с данни).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-ефективният начин за получаване на броя на редовете в таблицата

  2. Изявлението за актуализиране на pdo с помощта на concat не работи

  3. Задаването на стойността на една колона от всички редове е много бавно

  4. Управление на потребителски акаунт, роли, разрешения, удостоверяване PHP и MySQL - част 2

  5. Защо MySQL добавя коментар към таблиците на InnoDB?