docker安装mysql8

要在 Docker 中安装 MySQL 8 并允许远程登录,请按照以下步骤进行配置:

  1. 拉取 MySQL 8 镜像

    从 Docker 官方镜像仓库拉取 MySQL 8 的最新版本镜像:

    docker pull mysql:8
    
  2. 创建数据存储目录

    为了持久化存储 MySQL 数据,建议在宿主机上创建数据存储目录:

    mkdir -p /docker/mysql8/data
    
  3. 启动 MySQL 容器

    使用以下命令启动 MySQL 8 容器,并设置 root 密码为 your_password

    docker run -p 3307:3306 \
               --name mysql8 \
               -e MYSQL_ROOT_PASSWORD=your_password \
               -v /docker/mysql8/data:/var/lib/mysql \
               -d mysql:8
    

    参数说明:

    • -p 3307:3306:将宿主机的 3307 端口映射到容器的 3306 端口。
    • --name mysql8:为容器指定名称为 mysql8。
    • -e MYSQL_ROOT_PASSWORD=your_password:设置 MySQL 的 root 用户密码。
    • -v /docker/mysql8/data:/var/lib/mysql:将宿主机的 /docker/mysql8/data 目录挂载到容器内的 MySQL 数据目录,实现数据持久化。
    • -d mysql:8:在后台运行 MySQL 8 容器。
  4. 配置 MySQL 允许远程访问

    默认情况下,MySQL 8 使用 caching_sha2_password 插件进行密码加密,这可能导致某些客户端无法连接。为确保兼容性,建议将认证插件设置为 mysql_native_password

    • 进入 MySQL 容器

      docker exec -it mysql8 bash
      
    • 登录 MySQL

      mysql -u root -p
      

      输入之前设置的 root 密码 your_password

    • 修改 root 用户的认证插件和密码

      ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_password';
      FLUSH PRIVILEGES;
      

      这将允许 root 用户从任何主机使用 your_password 密码进行连接。

  5. 重启 MySQL 服务

    退出 MySQL 并重启容器,使配置生效:

    exit
    docker restart mysql8
    
  6. 验证远程连接

    使用 Navicat 等数据库客户端工具,连接到 your_server_ip 的 3307 端口,用户名为 root,密码为 your_password,即可实现远程访问。

注意事项

  • 确保宿主机的 3307 端口未被其他服务占用,否则可以修改 -p 参数中的端口号。
  • 为了确保数据的持久化,建议将 MySQL 的数据目录挂载到宿主机的目录。
  • 修改认证插件可能影响安全性,建议在生产环境中谨慎操作。

通过上述步骤,您即可在 Docker 中安装 MySQL 8 并配置为允许远程登录。

posted @ 2025-03-14 16:15  郭小睿  阅读(2058)  评论(0)    收藏  举报