使用 docker-compose 在 mysql 中创建特定模式
Posted
技术标签:
【中文标题】使用 docker-compose 在 mysql 中创建特定模式【英文标题】:create specific schema in mysql with docker-compose 【发布时间】:2021-08-13 17:00:24 【问题描述】:我必须为每个服务创建一个特定的架构。
-
首先,我将以
root
用户身份在docker-compose
文件的帮助下连接数据库
docker-compose.yml
version: "3"
services:
patient-service:
image: patient-service:1.0
container_name: patient-service
ports:
- 9090:9090
restart: on-failure
networks:
- patient-mysql
depends_on:
- mysql-db
links:
- mysql-db
mysql-db:
image: mysql:8
container_name: mysql-db
ports:
- 3306:3306
networks:
- patient-mysql
environment:
- MYSQL_ROOT_PASSWORD=14292
- MYSQL_USER=root
networks:
patient-mysql:
-
其次,我会在spring boot项目的
root
路径下创建schema.sql
文件。
schema.sql
create user 'patient_db'@'%' identified by '67546';
grant all privileges on *.* to 'patient_db'@'%';
flush privileges;
create database patient_db;
use patient_db;
create table if not exists holiday(holiday_date varchar(100),holiday_name varchar(100),created_by varchar(100),
modified_by varchar(100),created_date_time timestamp,modified_date_time timestamp,constraint pk_date_holiday primary key(holiday_date));
3.最后,在properties-mysql.yml
文件的帮助下,从项目中连接到数据库上的特定架构。
spring:
datasource:
url: 'jdbc:mysql://mysql-db/patient_db?createDatabaseIfNotExists=true&autoReconnect=true&llowPublicKeyRetrieval=true&useSSL=false&allowPublicKeyRetrieval=true'
username: patient_db
password: 67546
driver-class-name: com.mysql.cj.jdbc.Driver
initialization-mode: always
tomcat:
test-while-idle: true
validation-query: SELECT 1
jpa:
database-platform: org.hibernate.dialect.MySQL8Dialect
show-sql: true
hibernate:
ddl-auto: validate
则抛出以下异常
access denied for user 'patient_db'@'%' (using password yes)
我的撰写文件有什么问题?我们不能在与应用程序一起加载的schema.sql
文件中创建不同的用户吗?
github - github repo of app
【问题讨论】:
【参考方案1】:我可以建议你更简单的方法。创建新文件夹(例如 init_scripts)并将 schema.sql 移动到此文件夹。并将这个文件夹挂载到mysql docker镜像到文件夹/docker-entrypoint-initdb.d
volumes:
- "./init_scripts:/docker-entrypoint-initdb.d"
更多信息请阅读https://hub.docker.com/_/mysql主题
初始化一个新的实例
【讨论】:
抱歉,我在将密码上传到 *** 时编辑了密码。密码相同 你能分享可重现的例子吗? 我会分享 Github 链接。只需拉取并运行属于patient-visit-service
的撰写文件
我无法构建 docker 镜像,因为我遇到了这个错误找不到 com.oracle:ojdbc6:11.2.0.4。当我尝试构建 jar 文件时
只需将其从依赖项中删除即可。如果没有,您必须在本地安装它以上是关于使用 docker-compose 在 mysql 中创建特定模式的主要内容,如果未能解决你的问题,请参考以下文章
使用 docker-compose 链接 django 和 mysql 容器
在 docker-compose 中使用 MySQL 初始化 Hibernate 时连接被拒绝
django 无法在 docker-compose 中连接 mysql