虚拟机中使用docker部署MySql8.0并进行连接与设置允许远程连接

大家好,我是工藤学编程 🦉一个正在努力学习的小博主,期待你的关注
实战代码系列最新文章😉C++实现图书管理系统(Qt C++ GUI界面版)
SpringBoot实战系列🐷【SpringBoot实战系列】Sharding-Jdbc实现分库分表到分布式ID生成器Snowflake自定义wrokId实战
环境搭建大集合环境搭建大集合(持续更新)
分库分表分库分表技术栈讲解-Sharding-JDBC

一、docker的安装

1、Ubuntu

# 更新包索引
sudo apt update

# 安装必要的依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新包索引(包含新添加的 Docker 源)
sudo apt update

# 安装 Docker CE
sudo apt install -y docker-ce docker-ce-cli containerd.io
#执行以下命令,检查Docker是否安装成功。
sudo docker -v

#执行以下命令,启动Docker服务,并设置开机自启动。
sudo systemctl start docker
sudo systemctl enable docker

#执行以下命令,查看Docker是否启动。
sudo systemctl status docker

最终执行结果如下,说明我们成功安装docker

在这里插入图片描述

安装成功之后,我们还需要配置镜像加速

([ -f /etc/docker/daemon.json ] || mkdir -p /etc/docker) && echo '{ "registry-mirrors" : [ "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud" ] }' > /etc/docker/daemon.json && sudo systemctl restart docker && sleep 1 && docker info | grep -A 4 "Registry Mirrors"

镜像加速报权限不够错误解决

我这里执行镜像加速命令报/etc/docker/deamon.json权限不够
在这里插入图片描述
这是因为直接使用 > 重定向符号尝试写入受保护的系统文件,而没有使用 sudo 提升权限。
要解决这个问题,你需要使用 sudo 来执行文件写入操作。以下是修正后的命令:

([ -f /etc/docker/daemon.json ] || sudo mkdir -p /etc/docker) && \
echo '{ "registry-mirrors" : [ "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud" ] }' | \
sudo tee /etc/docker/daemon.json > /dev/null && \
sudo systemctl restart docker && \
sleep 1 && \
docker info | grep -A 4 "Registry Mirrors"

用户没有权限访问 Docker 守护进程导致没有权限访问docker解决

执行修改后的命令之后,仍有报错
在这里插入图片描述
解决方案:

# 添加当前用户到 docker 组
sudo usermod -aG docker $USER

# 刷新用户组(立即生效)
newgrp docker

# 验证权限
docker info | grep -A 4 "Registry Mirrors"

在这里插入图片描述

docker安装成功!

2、Red Hat/CentOS

#运行以下命令,下载docker-ce的yum源。
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#运行以下命令,安装Docker。
sudo yum -y install docker-ce

#执行以下命令,检查Docker是否安装成功。
sudo docker -v

#执行以下命令,启动Docker服务,并设置开机自启动。
sudo systemctl start docker
sudo systemctl enable docker

#执行以下命令,查看Docker是否启动。
sudo systemctl status docker

#配置Docker镜像加速
([ -f /etc/docker/daemon.json ] || mkdir -p /etc/docker) && echo '{ "registry-mirrors" : [ "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud" ] }' > /etc/docker/daemon.json && sudo systemctl restart docker && sleep 1 && docker info | grep -A 4 "Registry Mirrors"

二、docker部署Mysql8.0与配置连接

1、docker部署Mysql(切换为root用户)

#创建目录
mkdir -p /home/data/mysql/
#创建配置文件
touch /home/data/mysql/my.cnf

#部署
docker run \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /home/data/mysql/conf:/etc/mysql/conf.d \
    -v /home/data/mysql/data:/var/lib/mysql:rw \
    -v /home/data/mysql/my.cnf:/etc/mysql/my.cnf \
    --name ccc_mysql \
    --restart=always \
    -d mysql:8.0

-e MYSQL_ROOT_PASSWORD=123456 记得将123456修改为自己想要设置的密码
–name ccc_mysql ccc_mysql可以修改为自己想要的容器名称

2、虚拟机中使用Mysql

安装 MySQL 客户端

  1. Ubuntu/Debian 系统
sudo apt update
sudo apt install mysql-client -y
  1. CentOS/RHEL 系统
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm

sudo yum install mysql-community-client -y

安装完成后,通过以下命令验证客户端是否正常工作:

mysql --version

在这里插入图片描述

连接mysql

mysql -h 127.0.0.1 -P 3306 -u root -p

输入密码后连接成功

在这里插入图片描述

三、配置远程访问

编辑挂载的配置文件 /home/data/mysql/my.cnf:

vim /home/data/mysql/my.cnf

vim需要先键盘点击 i,然后把内容进行修改,修改完成后使用esc键退出编辑,然后再输入:wq,报错并退出

添加或修改以下内容:

[mysqld]
bind-address = 0.0.0.0  # 允许所有IP访问

重启 MySQL 容器使配置生效:

docker restart ccc_mysql

ccc_mysql记得改成自己的容器名称

确保容器端口正确映射

docker ps | grep ccc_mysql
# 输出应包含类似: 0.0.0.0:3306->3306/tcp

开放防火墙端口(如果有防火墙)如果虚拟机启用了防火墙(如 Ubuntu 的 ufw),开放 3306 端口:

sudo ufw allow 3306/tcp
sudo ufw reload

验证远程连接是否成功

大家可以通过 MySQL 客户端工具尝试,这里我通过java代码尝试,插入数据成功!
在这里插入图片描述

觉得有用请点赞收藏!
如果有相关问题,欢迎评论区留言讨论~

### 安装 MySQL 8.0 on Docker #### 下载安装 Docker 版本的 MySQL 8.0 为了在 Docker 中运行 MySQL 8.0 数据库,首先需要拉取官方镜像: ```bash docker pull mysql:8.0 ``` 这会从 Docker Hub 获取最新的 MySQL 8.0 镜像[^1]。 #### 设置 MySQL 的环境变量启动容器 创建一个新的 Docker 容器来运行 MySQL 设置必要的环境变量。这些变量用于定义 root 用户密码和其他初始化参数: ```bash docker run --name some-mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d mysql:8.0 ``` 上述命令中的 `MYSQL_ROOT_PASSWORD` 是用来设定 MySQL root 用户的初始登录密码。 #### 创建自定义网络以便其他服务连接MySQL 对于更复杂的部署场景,比如 Nacos 和 MySQL 协同工作时,则可能希望为它们建立一个共享的 Docker 网络以简化互联配置: ```bash docker network create docker-ubuntu-net ``` 之后可以通过指定此网络名称让新创建的服务加入其中[^2]: ```bash docker run --name some-nacos --network=docker-ubuntu-net ... docker run --name some-mysql --network=docker-ubuntu-net ... ``` #### 持久化存储数据卷 为了避免因容器重启而导致的数据丢失问题,推荐使用 Docker Volumes 或者绑定挂载的方式来进行持久化的数据管理。这里展示如何通过 `-v` 参数将宿主机上的路径映射给容器内的 `/var/lib/mysql` 目录作为数据库文件的位置: ```bash mkdir -p /opt/datas/docker/mysql/data docker run --name some-mysql \ -v /opt/datas/docker/mysql/conf:/etc/mysql/conf.d \ -v /opt/datas/docker/mysql/data:/var/lib/mysql \ ... ``` 这样做的好处是可以确保即使删除了容器本身也不会影响已经保存下来的数据[^4]。 #### 使用 Navicat 连接MySQL 实例 当尝试利用图形界面工具如 Navicat 来访问位于 Docker 内部运行着的 MySQL 服务器时,可能会遇到一些权限或端口转发方面的问题。解决方法之一就是确保正确设置了外部可访问的端口号,允许来自客户端 IP 地址范围内的请求到达目标容器内部监听的服务端口上。通常做法是在启动容器时加上 `-p` 参数完成端口映射操作: ```bash docker run ... -p 3306:3306 ... ``` 另外还需要确认防火墙规则以及 SELinux (如果适用的话) 是否阻止了相应的流量传输过程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件编程在线接单(需要可私)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值