Docker compose配置MySQL并实现远程连接

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

  • 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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过提供的引用内容,可以看出用户想了解关于使用docker-compose部署mysql容器的问题。 要使用docker-compose启动mysql容器,需要创建一个docker-compose.yml文件,其中包含mysql服务的配置。在该文件中,可以指定mysql的镜像版本、容器名称、环境变量、端口映射和数据卷等。根据引用中的示例,以下是一个docker-compose.yml文件的示例配置: ```yaml version: '3' services: mysql: image: mysql:5.7 restart: always container_name: mysql environment: MYSQL_ROOT_PASSWORD: chen command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M ports: - 3306:3306 volumes: - /data/mysql:/var/lib/mysql - /etc/localtime:/etc/localtime:ro ``` 在该示例中,使用了mysql:5.7的镜像版本,并指定了容器的名称为mysql。通过environment字段,可以设置mysql的root密码。ports字段指定了宿主机和容器之间的端口映射关系,将宿主机的3306端口映射到容器的3306端口。volumes字段指定了数据卷的映射关系,将宿主机的/data/mysql目录映射到容器的/var/lib/mysql目录。 要启动并运行整个应用程序,可以使用docker-compose的up命令。根据引用的示例,以下是启动docker-compose服务的命令: ```bash docker-compose up ``` 这将会启动所有配置docker-compose.yml文件中的服务。如果希望在后台运行服务,可以使用docker-compose up -d命令。 至此,您已经成功使用docker-compose部署了mysql容器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [docker compose 安装Mysql](https://blog.csdn.net/cjj2006/article/details/129246910)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [docker-compose(部署微服务+MySQL)](https://blog.csdn.net/weixin_38380811/article/details/127853696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值