1.需求:

	一个项目需要用docker部署mysql,并且mysql的
	项目数据库名:mproject,帐号:mao,密码为mao123,端口为:33307

网上一般方式:

在这里插入图片描述

	网上找的都是默认帐号为root,另外配置的用户名和密码也是错误的,以这种方式如果要将数据库的账户改为mao有两种方式:
方式一:在容器启动时通过初始化sql新增用户名mao和密码mao123
方式二:在容器启动之后进入mysql,新增用户名mao和密码mao123
这两种方式都比较繁琐。
于是去mysql官网探索一番之后发现了新方法。下面是自己的docker-compose.yml搭配讲解

2.docker-compose.yml配置

version: "3" 
services:   
  mysql:
   image: mysql:8.0
   ports:
     - 33307:3306                             #将外部端口33307映射为内部默认创建的3306
   volumes:
     - ./data/mysql:/var/lib/mysql            #将容器中运行的mysql数据保存到宿主机,防止容器删除后数据丢失
     - ./init:/docker-entrypoint-initdb.d/    #/docker-entrypoint-initdb.d/这是数据库提供的初始化目录,数据库在启动时会默认执行当期目录下的以.sql或者.sh结尾的文件。
   environment:
     MYSQL_ROOT_PASSWORD: root                #数据库初始话为root用户设置的默认密码
     MYSQL_DATABASE: mproject                 #数据库名
     MYSQL_USER: mao                          #自定义数据库的用户,权限只作用于MYSQL_DATABASE配置的数据库
     MYSQL_PASSWORD: mao123                   #自定义数据库的用户,权限只作用于MYSQL_DATABASE配置的数据库
   restart: on-failure                    	  #重启条件 
   networks:
   	- my_pro 
networks: 
  my_pro:
    driver: bridge
    ipam:
      config: 
        - subnet: 192.168.0.0/16   			#配置子网

3.配置说明:

1./docker-entrypoint-initdb.d/
	这个目录是数据库官方提供的初始目录,以.sql .sh .bat结尾的文件放到这个目录下面,
	在数据库启动的时候会自动执行。
2.environment 这是mysql官方提供的针对数据库启动时的配置

在这里插入图片描述

上图是mysql官网针对MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD三者的关系描述:
	MYSQL_USER,MYSQL_PASSWORD是对MYSQL_DATABASE表有作用,如果只配置了MYSQL_USER,MYSQL_PASSWORD,那配置将无任何效果。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐