侧边栏壁纸
  • 累计撰写 9 篇文章
  • 累计创建 5 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

如何通过docker使用mysql

Lieey
2024-11-12 / 0 评论 / 0 点赞 / 3 阅读 / 2746 字

如何通过Docker使用Mysql数据库

方法一:使用docker run命令

  • 使用 docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=yourpassword -e MYSQL_ROOT_HOST='%' mysql:latest命令
    • 命令中必须含有 MYSQL_ROOT_PASSWORD参数否则容器运行后会报出没有设置密码的错误
    • 命令中需要含有 MYSQL_ROOT_HOST='%'通过设置 MYSQL_ROOT_HOST 环境变量来允许 root 用户从任意 IP 访问,从而达到类似 bind-address = 0.0.0.0 的效果。因为MySQL 默认情况下只允许本地连接,不允许外部网络访问。你可以检查 MySQL 容器的 my.cnf 配置文件,确保 bind-address 设置为 0.0.0.0,以允许来自外部的连接
    • 或者你可以不添加 MYSQL_ROOT_HOST='%'参数,转而在运行之后,进入容器内部my.cnf文件进行修改。
    • 或者你可以在本地写一个my.cnf文件,使用 -v 参数将自定义的配置文件挂载到容器中的 /etc/mysql/my.cnf(或其他 MySQL 配置文件路径)位置:docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=yourpassword -v $(pwd)/my.cnf:/etc/mysql/my.cnf mysql:latest

方法二:使用docker-compose

  • 需要在项目的根目录下创建一个docker-compose.yml文件
    services:
      mysql:
        image: mysql:latest
        ports:
          - "3307:3306"
        environment:
          MYSQL_ROOT_PASSWORD: `yourpassword`
          MYSQL_DATABASE: `yourdatabase`
        volumes:
          - 需要挂载的sql文件:/docker-entrypoint-initdb.d/sql文件名
        command: --bind-address=0.0.0.0
    

这样可以通过 docker compose up命令启动

这样通过command设置bind-address=0.0.0.0,并且通过卷的挂载,将需要运行的文件挂载到容器的docker-entrypoint-initdb.d文件下,在此文件夹下的文件,容器会在启动初始化的时候运行。非常方便

以上就是比较简单的两种方法,但是需要注意细节,记住mysql是默认不让外部访问的必须设置一下,并且一定要在启动时时候设置密码
0

评论区