Я пытаюсь импортировать базу данных в mysql docker контейнер. Я могу попасть в контейнер следующим образом:
docker exec -it server_mysqldb_1 bash
и затем в mysql с помощью этой команды:
mysql -uroot -pmypassword
Однако я пытаюсь импортировать базу данных с помощью этой команды:
docker exec -i server_mysqldb_1 mysql -uroot -pmypassword license_db < license_db_test.sql
Выдает ошибку «Отказано в доступе»:
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Сегодня утром все работало нормально. Я временно изменил расположение базы данных в docker -compose.yml., И это явно испортило. Я вернул его к тому, что было, но все равно не повезло.
Вот docker -compose.yml:
version: "3"
services:
licensing-app:
image: licensing-app
ports:
- "7090:8080"
networks:
- license-gen-network
depends_on:
- mysqldb
environment:
- "SPRING_PROFILES_ACTIVE=prod"
- "AWS_ACCESS_KEY_ID=xxx"
- "AWS_SECRET_ACCESS_KEY=xxx"
mysqldb:
image: mysql:8
ports:
- 3308:3308
networks:
- license-gen-network
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_DATABASE: license_db
networks:
license-gen-network:
# Volumes
volumes:
db-data:
Есть обходной путь, но я все еще хотел бы понять причину root, так как это одна строка в отличие от обходного пути, но вот оно:
1. cp license_db_test.sql server_mysqldb_1:/license_db_test.sql
2. docker exec -it server_mysqldb_1 bash
3. mysql -uroot -p license_db < license_db_test.sql