您需要确保您的运行环境达到了以下的要求:

  • Docker Engine
  • Docker CLI
  • Docker Compose

docker-compose.yml

version: '3.7'
services:
  mysql:
    image: "mysql/mysql-server:8.0"
    environment:
      TZ: "Asia/Shanghai"
      MYSQL_ROOT_PASSWORD: "root密码" # 设置root密码
      MYSQL_DATABASE: "数据库名" # 设置数据库
      MYSQL_USER: "用户名" # 增加一个MySQL用户,并启用远程连接
      MYSQL_PASSWORD: "用户密码" # 设置用户密码
    ports:
      - "自定义映射端口:3306" # 映射,如果需要远程连接Docker中的数据库,这一步很重要
    volumes: # 挂载,重新创建镜像时,数据库数据不会消失
      - mysql-data:/var/lib/mysql
      - ./.github/init.sql:/docker-entrypoint-initdb.d/init.sql
    restart: "always"
    container_name: "mysql"

远程连接效果如下:
在这里插入图片描述
docker内的项目连接数据库时的配置
注意:每一个参数的名字是根据.env文件确定的。enviroment定义在容器中设置的环境变量。

environment:
      APP_ENV: "${APP_ENV:-prod}"
      DB_HOST: "mysql"
      DB_PORT: "3306" # 因为在同一个环境,所以直接用3306端口就行
      DB_USERNAME: "用户名"
      DB_PASSWORD: "密码"
      DB_DATABASE: "database


如果参数名字有误,可能会报密码错误或者拒绝连接的错误,注意检查参数。docker exec

// 进入docker的 mysql
docker exec -it mysql mysql -uroot -p // 
// 设置远程
use mysql;
// 查看当前用户
mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| healthchecker    | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
7 rows in set (0.00 sec)
update user set host='%' where user='root'; // 开启远程连接。但是一般建议建个新用户再设置
ALTER USER 'root'@'%' IDENTIFIED BY '密码'; // 如果密码错误时,可以修改密码
// 刷新数据库
flush privileges;
// centos开放3306端口,如果开启了映射,记得开启映射的端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=映射端口/tcp --permanent // 开启映射的端口
// 重启centos的防火墙
systemctl restart firewalld.service

// 远程连接测试时数据库后面加:?allowPublicKeyRetrieval=true(用DBeaver时需要加)
否则会报错:
Public Key Retrieval is not allowed
GitHub 加速计划 / compose / compose
33.27 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:2 个月前 )
501b5acd Add `jhrotko` to Core Maintainers. Signed-off-by: Laura Brehm <laurabrehm@hey.com> 7 天前
f51bc4cd Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com> 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐