在Docker中使用MySQL 8 版本数据库

本文详细介绍了如何在Linux虚拟机环境下,通过Docker部署MySQL 8.0数据库,并进行端口映射,实现远程访问。在Docker中安装MySQL镜像,设置端口映射后,利用Navicat通过虚拟机IP和特定端口成功连接到MySQL。同时,文章还列举并解决了两个常见的访问问题。

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

本文主要目的是:在虚拟机环境下使用Docker,安装MySQL数据库,然后再局域网中访问它。
系统环境:

1、在Linux下安装Docker

1、查看centos版本
# uname -r
  3.10.0-693.el7.x86_64
 (要求:大于3.10; 如果小于的话需要升级)
# yum update
 (运行这条命令要很长时间)
2、安装docker
# yum install docker
3、启动docker
# systemctl start docker
4、查看docker版本
# docker -v
5、停止docker
# systemctl stop docker
6、重启docker
systemctl restart docker
7、为了方便设置开机启动docker
# systemctl enable docker

2、在Docker中下安装MySQL

  1. 查找Docker Hub上的mysql镜像
    在这里插入图片描述
1、搜索镜像
# docker search mysql/mysql-server

2、拉取镜像
# docker pull mysql/mysql-server
查看镜像列表
# docker images

3、根据镜像启动一个mysql的docker容器
# docker run --name=mysql01 -d mysql/mysql-server
参数-d:后台运行

4、查看全部容器列表
# docker ps -a
只查看运行中的容器
# docker ps

5、启动容器
# docker start 容器id

6、删除一个容器
# docker rm 容器id

7、关闭linux的防火墙
# service firewalld stop
查看防火墙状态
# service firewalld status 

8、查看容器的日志
docker logs container-name或container-id

在这里插入图片描述
在这里插入图片描述
以上我们就完成了在docker中安装数据库,接下来我们要把docker上容器的端口映射到虚拟机,这样我们才能在局域网中通过Windows下Navicat工具访问docker容器中的MySQL。

3、端口映射

这里介绍两种端口映射的方式:

1)-p(小写)可以指定端口号3306:3306(外部虚拟机的端口号:Docker容器内的端口号)
# docker run --name mysql02 -p 3306:3306 -d mysql/mysql-server

2)-P(大写)随机生成端口号
# docker run --name mysql03 -P -d mysql/mysql-server

更多关于docker run的参数见附录

映射完成后我们使用docker ps 命令查看端口映射情况:
在这里插入图片描述
下面只以mysql02容器做演示,其他安装MySQL的docker容器可以同样操作。

1、查看mysql日志
# docker logs mysql02

2、查看自动生成的密码并记下来
# docker logs mysql02 2>&1 | grep GENERATED
[Entrypoint] GENERATED ROOT PASSWORD: ycgONsaqJIdLyS,ygR@xYJEhGon

3、运行mysql02容器里的MySQL,以root用户登录,密码为上面自动生成的密码
# docker exec -it mysql02 mysql -uroot -p

4、更改root用户的密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.08 sec)

5、退出
mysql> \q
Bye

<think>好的,我现在需要解决用户的问题:如何在Docker中找到MySQL容器并查询数据库密码。用户提到的是在DockerMySQL容器内查看或找回密码,所以首先得理清楚步骤。 首先,用户可能已经运行了一个或多个Docker容器,其中包含MySQL实例。我需要引导用户如何找到这些容器。通常,可以使用`docker ps`命令来列出正在运行的容器。如果容器没有运行,可能需要加上`-a`选项来显示所有容器。用户需要确认容器的名称或ID,这样才能进一步操作。 接下来,进入MySQL容器的命令行界面。这里应该使用`docker exec -it 容器名或ID bash`或者`sh`,这取决于容器内的shell环境。进入容器后,用户需要连接到MySQL数据库,这时候可能需要密码。但问题在于用户可能忘记了密码,或者想找回密码,这时候可能需要修改密码或者查看配置。 不过,这里有个问题:MySQL的密码通常不会明文存储在容器内部,而是在启动容器时通过环境变量设置,比如`MYSQL_ROOT_PASSWORD`。所以用户可能需要检查启动容器时使用的环境变量。可以通过`docker inspect 容器名或ID`来查看容器的配置信息,包括环境变量。如果用户是通过docker run命令指定了密码,或者使用docker-compose文件,可能需要检查这些地方。 如果用户无法通过环境变量找回密码,可能需要重置MySQL的root密码。这通常需要停止容器,修改启动配置,以跳过权限检查,然后进入MySQL进行密码重置。但在Docker环境中,这可能需要重新运行容器并添加特定的参数,比如`--skip-grant-tables`,然后执行更新密码的SQL语句。 此外,用户提到的引用中有关于进入容器、操作数据库以及修改密码的方法,需要参考这些步骤。例如,引用[3]提到了进入容器并登录MySQL,引用[4]可能涉及配置文件的修改,但这里可能需要调整MySQL的安全设置以允许访问。 需要注意的是,如果用户是在容器内部操作,可能需要确保MySQL服务正在运行,并且有足够的权限。另外,如果用户没有设置持久化存储,密码可能在容器重启后丢失,所以建议检查docker run命令或docker-compose.yml中的环境变量设置。 总结步骤应该是:1) 查找MySQL容器;2) 进入容器;3) 检查环境变量或配置文件获取密码;4) 如果无法获取,则重置密码。同时,提醒用户注意密码安全和持久化存储的问题。</think>### 如何在Docker中查找MySQL容器并查询数据库密码 #### 步骤1:查找MySQL容器 1. **列出所有Docker容器** 使用以下命令查看当前运行的容器,若需包含已停止的容器,添加 `-a` 参数: ```bash docker ps -a | grep mysql ``` 输出示例: ``` c3f279d17e0a mysql:8.0 "docker-entrypoint.s…" 2 weeks ago Up 2 hours 3306/tcp, 33060/tcp mysql-container ``` #### 步骤2:进入MySQL容器 1. **进入容器命令行界面** 使用 `docker exec` 命令进入容器(假设容器名为 `mysql-container`): ```bash docker exec -it mysql-container bash ``` #### 步骤3:查看或重置密码 ##### 方法1:通过环境变量找回密码 1. **检查容器启动时的环境变量** MySQL容器的密码通常通过环境变量 `MYSQL_ROOT_PASSWORD` 设置[^3]。使用以下命令查看容器配置: ```bash docker inspect mysql-container | grep MYSQL_ROOT_PASSWORD ``` 若输出包含 `"MYSQL_ROOT_PASSWORD=your_password"`,则直接获取密码。 ##### 方法2:通过MySQL配置文件或日志 1. **查找MySQL日志中的初始化信息** 在容器内查看日志文件(路径一般为 `/var/log/mysql/error.log`),搜索 `generated root password`: ```bash grep 'temporary password' /var/log/mysql/error.log ``` ##### 方法3:重置密码(若无法找回) 1. **以跳过权限验证模式启动容器** 停止原容器后,运行新容器并添加 `--skip-grant-tables`: ```bash docker run -d --name mysql-temp -e MYSQL_ROOT_PASSWORD=temp -v mysql_data:/var/lib/mysql mysql:8.0 --skip-grant-tables ``` 2. **进入容器并重置密码** 连接到临时容器后执行: ```sql ALTER USER 'root'@'%' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; ``` #### 步骤4:验证新密码 1. **重新登录MySQL** 退出容器后,用新密码连接: ```bash mysql -u root -p ``` ### 注意事项 - **密码存储安全性**:建议通过 `docker-compose.yml` 或 Kubernetes Secrets 管理密码。 - **数据持久化**:确保MySQL数据目录已挂载卷(如 `-v mysql_data:/var/lib/mysql`),避免容器重启后数据丢失[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值