Navicat 连接远程服务器里 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
才疏学浅,有问题请指正。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用 Navicat 连接 Docker MySQL 数据库,需要执行以下步骤: 1. 确保已经安装了 DockerNavicat 应用程序。 2. 在 Docker 启动 MySQL 容器,可以使用以下命令: ``` docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag ``` 其,`some-mysql` 是容器的名称,`my-secret-pw` 是 MySQL 的 root 用户的密码,`tag` 是所使用的 MySQL 镜像的版本号。 3. 获取 MySQL 容器的 IP 地址,可以使用以下命令: ``` docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysql ``` 其,`some-mysql` 是 MySQL 容器的名称。 4. 在 Navicat 创建新的数据库连接,选择 MySQL 数据库类型,并填写以下信息: - Host:步骤 3 获取到的 MySQL 容器的 IP 地址。 - Port:3306(默认的 MySQL 端口号)。 - User Name:root。 - Password:步骤 2 设置的 MySQL root 用户的密码。 - Database:要连接MySQL 数据库的名称。 完成上述步骤后,就可以使用 Navicat 连接 Docker MySQL 数据库了。 ### 回答2: Navicat是一款很常用的数据库管理工具,能够方便地管理数据库和进行数据库开发工作。而Docker则是一种容器化技术,它可以将应用程序打包为容器,从而方便地进行部署和管理。如果想要使用Navicat管理在Docker运行的MySQL数据库,需要进行一定的设置和配置。 首先,需要在Docker启动MySQL容器。可以使用以下命令: docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest 这条命令会在Docker运行一个名为mysql的容器,并且设置root用户的密码为123456,使用最新版本的MySQL镜像。 然后,在Navicat连接MySQL数据库时,需要填写一些参数。在连接MySQL服务器的对话框,需要填写服务器主机名或IP地址,端口号,默认的数据库名称和登录凭据。这些参数的设置如下: 主机名或IP地址:可以使用Docker容器的IP地址。可以使用以下命令查询容器的IP地址: docker inspect -f '{{.NetworkSettings.IPAddress}}' mysql 端口号:在Docker容器启动MySQL时,可以将MySQL的默认端口映射到主机的端口。可以使用以下命令将容器内的3306端口映射到主机的3306端口: docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest 默认的数据库名称:如果在容器没有创建数据库,则需要手动创建。可以使用以下命令创建一个名为test的数据库docker exec -it mysql mysql -uroot -p123456 -e "create database test;" 登录凭据:需要输入root用户的用户名和密码,这的用户名为root,密码为使用-e参数设置的123456。 最后,点击“测试连接”按钮进行连接测试。如果连接成功,则可以在NavicatMySQL数据库进行管理和操作。 ### 回答3: Navicat是一种常用的数据库管理工具,可以用于连接各种类型的数据库,包括运行在Docker容器MySQL数据库。本文将介绍如何使用Navicat连接DockerMySQLDocker运行MySQL 首先,我们需要在Docker上启动MySQL。我们可以使用docker run命令在容器运行MySQL。以下是运行命令的示例: docker run --name=mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:latest 这个命令会在容器运行MySQL,并将容器的3306端口映射到本地机器的3306端口。我们也可以为MySQL指定root密码。 连接MySQL 接下来,我们使用Navicat连接MySQL。在Navicat界面上,我们需要选择MySQL作为我们要连接数据库类型,并填写连接信息。 填写连接信息: 1.在连接输入任意名称。 2.选择MySQL作为数据库类型。 3.在主机名或IP地址输入本机IP地址或者远程服务器IP地址。 4.将端口号设置为3306。 5.输入用户名和密码及选择连接数据库。 最后,点击连接按钮,Navicat即可连接MySQL并开始管理您的数据库。 总结 在本文,我们介绍了如何使用Navicat连接Docker容器运行的MySQL数据库。通过Navicat,我们可以轻松管理MySQL数据库,包括增删改查和备份还原等功能。在使用Navicat之前,我们需要确保MySQL已经在Docker容器成功运行。为了更好的安全性,我们还可以设置MySQL账户和密码,避免非法访问造成的损失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值