使用 Docker 部署 MySQL 并允许远程连接(Navicat)

Docker 部署 MySQL 并远程连接 Navicat

使用 Docker 部署 MySQL 并允许远程连接(Navicat)的步骤

  1. 拉取 MySQL 镜像(这里尽量使用稳定性高的mysql8)

    <BASH>

    docker pull mysql:8.0
  2. 创建本地目录用于持久化数据和配置

    <BASH>

    mkdir -p ~/mysql/data ~/mysql/conf
  3. 创建自定义 MySQL 配置文件~/mysql/conf 目录下新建 custom.cnf 文件,使用命令vim ~/mysql/conf/custom.cnf 内容如下:

    <INI>

    [mysqld]
    bind-address = 0.0.0.0
    default_authentication_plugin=mysql_native_password
  4. 启动 MySQL 容器(其中my-secret-pw修改为自己的密码)

    <BASH>

    docker run -d \
      --name mysql-container \
      -p 3306:3306 \
      -e MYSQL_ROOT_PASSWORD=my-secret-pw \
      -v ~/mysql/data:/var/lib/mysql \
      -v ~/mysql/conf:/etc/mysql/conf.d \
      mysql:8.0
  5. 创建远程访问用户 进入 MySQL 容器并创建新用户:(注意修改my-secret-pw)

    <BASH>

    docker exec -it mysql-container mysql -uroot -pmy-secret-pw

    在 MySQL 命令行中执行:

    <SQL>

    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'remote_password';
    GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
    FLUSH PRIVILEGES;
  6. 检查和开放防火墙 确保宿主机防火墙开放 3306 端口:

    <BASH>

    sudo ufw allow 3306/tcp
    sudo systemctl restart ufw

    云服务器需配置安全组的入站规则。

  7. 使用 Navicat 连接

    • 主机:宿主机 IP 地址
    • 端口3306
    • 用户名remote_user
    • 密码remote_password

常见问题解决

  • 连接失败

    • 检查容器状态:docker logs mysql-container
    • 确认端口映射:docker ps 查看 0.0.0.0:3306->3306/tcp
    • 测试本地连接:mysql -uremote_user -p -h 127.0.0.1
    • 验证用户权限:确保用户 'remote_user'@'%' 存在且权限正确
  • 认证插件错误

    • 使用 mysql_native_password 创建用户
    • 或配置 default_authentication_plugin=mysql_native_password

按照以上步骤操作,即可通过 Navicat 成功远程连接 Docker 中的 MySQL 服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值