Navicat远程访问Ubuntu中MySQL数据库

本文详细介绍了如何通过配置Ubuntu防火墙、赋予MySQL用户远程连接权限以及Navicat的设置,实现从Navicat远程访问运行在Ubuntu上的MySQL数据库。包括ufw的端口开放、MySQL权限分配及Navicat SSH和常规连接参数的设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.配置Ubuntu防火墙

https://blog.youkuaiyun.com/xihalovejay/article/details/79963670
配置ufw或iptables,开放端口或关闭防火墙。
sudo ufw allow 端口号/tcp(允许连接)
ssh(22)
MySQL(3306)
sudo ufw enable(启用UFW)
sudo ufw status verbose(检查UFW状态和规则)

二.赋予MySQL用户远程连接权限

https://www.cnblogs.com/weifeng1463/p/7941625.html
https://www.cnblogs.com/gpdm/p/6492449.html
grant all privileges on . to root@’%’ identified by ‘password’;(‘%’代表all host)
flush privileges;(刷新)

三.Navicat配置

SSH中
主机:MySQL所在主机IP(可以使用ifconfig 命令

<think>好的,我需要帮助用户了解如何通过Navicat连接Docker中的MySQL数据库。首先,我需要回顾用户提供的引用内容,看看有哪些关键步骤。引用1提到需要Navicat客户端、服务器已安装Docker并运行MySQL。步骤包括服务器配置、Docker运行MySQL、检查端口和连接测试。引用2指出使用docker inspect查找MySQL容器的IP地址。引用3提到权限问题,比如MySQL默认只能本机访问,需要修改权限。 接下来,我需要整合这些信息,确保步骤清晰。首先,用户需要在服务器上安装Docker并拉取MySQL镜像,然后运行容器,注意端口映射,比如3306:3306。然后,进入容器修改MySQL的访问权限,允许远程连接,这可能涉及到创建用户或修改root的host为%。然后检查防火墙设置,确保端口开放。接着在Navicat中配置连接,使用服务器的IP和映射的端口,以及正确的用户名和密码。 需要注意的常见问题包括权限配置不正确、防火墙阻止访问、容器IP地址是否正确。可能还需要使用docker inspect来确认容器的IP,或者检查端口是否正确映射。另外,MySQL 8可能使用caching_sha2_password插件,导致连接问题,需要更改为mysql_native_password。 现在要组织这些步骤,按照逻辑顺序,从安装Docker到配置MySQL,再到Navicat连接。同时要确保用户理解每个步骤的目的,比如端口映射的作用,权限修改的必要性。还要提醒用户安全性,比如避免使用root远程访问,建议创建专用用户。 最后,生成相关问题,可能涉及如何检查端口映射、解决连接错误、提高安全性等。确保回答覆盖用户可能遇到的典型问题,并引用提供的资料来支持步骤的正确性。</think>### 如何通过Navicat连接Docker中的MySQL数据库 #### 步骤详解 1. **启动MySQL容器** 在服务器中使用Docker运行MySQL容器,需指定端口映射(将宿主机端口与容器端口绑定)和设置root密码: ```bash docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password mysql:latest ``` 关键参数说明: - `-p 3306:3306`:将宿主机的3306端口映射到容器的3306端口[^1] - `MYSQL_ROOT_PASSWORD`:设置MySQL的root用户密码 2. **配置MySQL远程访问权限** MySQL默认禁止远程连接,需进入容器修改权限: ```bash docker exec -it mysql bash # 进入容器 mysql -u root -p # 登录MySQL ``` 执行SQL命令允许root用户远程访问: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; ``` 若安全性要求高,建议创建专用用户: ```sql CREATE USER 'user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'user'@'%'; ```[^3] 3. **检查网络配置** - **查看容器IP**: ```bash docker inspect mysql | grep IPAddress # 获取容器内IP[^2] ``` - **开放防火墙端口**: 确保宿主机防火墙允许3306端口: ```bash ufw allow 3306 # Ubuntu示例 ``` 4. **Navicat连接配置** 打开Navicat,选择“MySQL”连接类型,填写以下信息: - **主机**:服务器公网IP或域名 - **端口**:宿主机映射端口(默认为3306) - **用户名/密码**:MySQL中配置的用户凭证 *注意:若使用云服务器,需在安全组中放行3306端口。* --- #### 常见问题解决 - **错误2003 (Can't connect to MySQL server)** - 检查端口映射是否生效:`docker ps`查看`PORTS`列 - 确认防火墙/安全组规则 - 验证MySQL用户权限是否允许`%`通配符[^3] - **身份认证插件冲突** MySQL 8.0默认使用`caching_sha2_password`,需改为`mysql_native_password`: ```sql ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值