docker 上mysql通过Navicat访问

本文介绍了如何使用Docker启动并配置MySQL容器,包括设置端口映射、数据卷挂载、环境变量以及容器命名。重点讲解了如何修改MySQL用户密码以允许远程连接,并提供了在laradock环境下两个可用用户的连接信息。
启动mysql
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name=mysql01 mysql:8.0

-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
–name 容器名字

进入docker的mysql容器

 docker exec -it 容器id  /bin/bash


 然后以root身份登录mysql (账户和密码在laradock/.env文件中查看)

  $ mysql -uroot -p123456


运行下列命令,navicat就可以通过root用户连接mysql了

  ALTER USER 'localhost' IDENTIFIED WITH mysql_native_password BY 123456';
  ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456;
flush privileges;


 
laradoc生成的mysql容器,有两个用户root和default,你可以任选其一,进行连接
 

  ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret'; 

### 配置 Docker MySQL 容器以支持 Navicat 连接 为了确保通过 Navicat 能够成功连接到使用 Docker 部署的 MySQL 数据库,需要确保以下配置步骤正确执行: 1. **容器启动时的端口映射**:在运行 MySQL 容器时,必须将容器内的 MySQL 服务端口(默认为 `3306`)映射到宿主机的一个端口上。例如,可以通过 `-p 3306:3306` 参数将容器的 `3306` 端口映射到宿主机的相同端口,从而允许外部访问[^1]。 2. **设置 root 用户密码**:启动容器时,通过 `-e MYSQL_ROOT_PASSWORD=your_password` 参数设置 MySQL 的 root 用户密码,确保在 Navicat 中可以使用该凭据进行身份验证[^1]。 3. **检查防火墙设置**:如果宿主机有防火墙规则,需要开放相应的端口(如 `3306`),以便允许从 Navicat 所在机器发起的连接请求。 4. **Navicat 版本兼容性**:某些旧版本的 Navicat 可能不支持较新的 MySQL 协议特性,导致连接失败。更新至最新版的 Navicat 可以解决这类问题[^2]。 5. **MySQL 配置文件调整**:如果遇到用户密码无法登录的问题,应检查 Docker 配置文件中的环境变量是否正确设置了数据库密码,同时确认挂载的 MySQL 配置文件(如 `my.cnf`)中没有错误的配置项影响了用户的登录权限。 6. **测试连接**:在 Navicat 中新建一个连接,输入宿主机的 IP 地址以及之前设定的端口号和 root 用户密码,尝试建立连接。 ### 示例命令 ```bash docker run -d --name oj-mysql -p 3306:3306 -e "TZ=Asia/Shanghai" -e "MYSQL_ROOT_PASSWORD=123456" mysql:5.7 ``` 此命令会启动一个名为 `oj-mysql` 的 MySQL 容器,并将容器内的 `3306` 端口映射到宿主机的 `3306` 端口,同时设置了 root 用户的密码为 `123456`,并指定了时区为 `Asia/Shanghai`[^1]。 ### 注意事项 - 如果宿主机的 `3306` 端口已被占用,可以选择其他端口进行映射,比如 `-p 3307:3306`。 - 在生产环境中,建议使用更复杂的密码策略来增强安全性。 - 对于远程连接,还需要确保 MySQL 用户表中允许从任意主机连接的用户记录存在,例如 `root@%`。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值