Navicat 连接远程服务器里 docker 中的 mysql(已解决)

本文详细介绍了如何在Docker中管理端口映射,包括初始设置和后续增加映射,以及如何修改MySQL的root用户访问权限和配置文件。此外,还指导了在Navicat中通过SSH连接到Docker容器中的MySQL数据库的方法。

1. 开启端口映射

docker中,我们需要将允许外界访问的端口通过配置文件映射出来,本文不需要将3306端口映射,但是该部分还是有实际用途的,因此在此记录。着急可以跳过第一部分。
在创建并运行镜像的时候,我们会初始化参数,例如:

docker run -p 20000:22 -p 3000:3000 --name my_docker_sercer -itd docker_image:1.0 # 创建并运行docker_image:1.0镜像

但是,我们有时候会在创建后增加映射端口,此时,我们可以通过修改配置文件的方式处理。

  • 在容器外,使用root用户登录
docker ps -a # 查看所有容器信息
docker inspect xxx |grep Id # 查看需要添加端口映射的容器的id(xxx是需要添加端口映射的容器的名称)

image.png

  • 进入目录/var/lib/docker/containers

如果容器还在运行,需要先停止docker服务:systemctl stop docker
image.png
查看该目录下的所有容器,进入需要增加端口号的容器。
image.png
编辑hostconfig.json添加端口映射(参考其他端口格式):
image.png
编辑config.v2.json公开添加的端口(参考其他端口格式):
image.png

  • 重启容器:
systemctl start docker # 启动docker服务
docker start kob_server # 后面为自己的容器名称
# 启动容器后记得重启自己的服务(mysql, java, nginx等)
  • 到服务器中添加安全组(ip可以根据实际需求只放行本地ip):

image.png

2. 修改mysql配置

正文开始。

  • 修改mysql中的root用户访问权限

将mysql中的user表的root用户的host字段修改为%

show databases;
use mysql;
SELECT user, host FROM user;
UPDATE user SET host = '%' WHERE user = 'root';
# 最后记得刷新一下
FLUSH PRIVILEGES;

image.png

  • 修改配置文件

其实如果我们后面使用ssh连接容器,这一步修改没有必要,因为我们连接容器后就能够通过127.0.0.1访问数据库,但是可能有的同学想通过其他当时连接,这里将方法说明。着急的直接进入下一节。

这里有个坑,很多教程修改的是my.conf文件,但是mysql8以后就不在该文件中了,而是在mysqld.cnf中。

cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf

image.png
进入文件之后查找到bind-address,将这一行注释掉(需要一点点vim知识)
image.png

  • 最后重启mysql服务
service mysql restart

3. 在navicat中连接mysql

  • 在navicat中连接mysql数据库,选择ssh

需要注意的是,端口应选择容器的运行端口,密码是用户登录密码,不是mysql的密码。
image.png

  • 然后选择常规:

注意这里的主机是服务器容器中的本地ip,因为我们是通过ssh连接到容器了。
image.png

  • 最后点击测试连接并确定

image.png
才疏学浅,有问题请指正。

### 配置IDEA通过Navicat连接Docker容器内的MySQL数据库 #### 创建并启动MySQL Docker容器 为了确保能够顺利连接MySQL实例,首先需要创建并启动一个带有适当配置的MySQL容器。这一步骤可以通过`docker run`命令完成,并指定环境变量来设置根用户的密码。 ```bash docker run --name some-mysql -e MYSQL_ROOT_PASSWORD="your_password_here" -d mysql:tag ``` 这的`some-mysql`是给定容器的名字;`MYSQL_ROOT_PASSWORD`用于定义root账户的访问凭证;而`mysql:tag`则指定了要使用的镜像版本标签[^3]。 #### 修改MySQL用户权限以便远程访问 默认情况下,新安装的MySQL服务器可能不允许来自任何主机以外的地方建立连接。因此,在成功部署之后,应当调整相关表项允许更广泛的客户端接入: 执行下面SQL语句可以实现这一点: ```sql UPDATE user SET host = '%' WHERE User = 'root'; FLUSH PRIVILEGES; ``` 上述操作将使root账号可以从任意IP地址发起请求[^2]。 #### 使用Navicat进行连接测试 当一切准备就绪后,打开Navicat软件,新建一个MySQL连接对象。输入目标机器上的服务端口(通常是3306),以及之前设定好的认证信息——用户名为`root`,密码则是早先赋予的那个字符串值。如果是在本地环境中实验,则可以直接采用localhost作为主机名。 对于那些位于不同网络位置或是云平台之上的资源来说,还需要确认防火墙策略不会阻挡必要的通信流量,并且相应的安全组规则已经开放了必需的数据传输通道[^1]。 #### IDEA集成开发环境下的应用实践 虽然题目主要关注的是利用Navicat工具来进行管理活动,但在实际工作中经常也会涉及到从Java应用程序内部去调用这些持久化层的服务接口。此时借助于IntelliJ IDEA这样的强大IDE可以帮助开发者更加高效地构建基于Spring Boot框架的企业级解决方案。记得按照官方文档指导正确配置数据源属性文件,从而使得程序能够在运行期自动发现并绑定至所需的外部依赖之上。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值