docker容器中运行mysql数据库过程与遇到的问题

本文详细指导如何在Docker中部署MySQL,包括安装、容器配置、连接步骤,以及解决连接不上、accessdenied等常见问题的排查和解决方法,涉及端口映射、密码设置和navicat连接事项。

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

1、准备工作

在开始之前,你需要确保已经安装了 Docker,并且启动了 Docker 服务。如果你还没有安装 Docker,请先参考官方文档进行安装。

2、创建 MySQL 容器

docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password mysql:latest

按自己需要,修改musql-container以及your_password

3、连接到 MySQL 容器

docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" mysql-container

在cmd中运行这个命令,会返回我们运行的容器的ip,记录下用于连接。

4、连接数据库,创建数据库

CREATE DATABASE my_database;

5、如果连接不上

参考大佬这篇:docker中的mysql连接不上 - 老白网络

在使用 Docker 部署 MySQL 时,有时会出现连接不上的情况。下面是一些可能的原因及解决方法。

1. 确认 MySQL 容器是否正常运行。

docker ps

如果 MySQL 容器没有运行,请启动该容器。

docker start [容器名/容器ID]

2. 检查 MySQL 容器的端口是否正确映射到宿主机。

docker port [容器名/容器ID]

确认这个命令输出的端口号与在应用程序中使用的端口号一致。

3. 确认 MySQL 容器的 root 密码是否正确。

如果没有设置 root 密码,可以通过以下步骤进行设置:

docker exec -it [容器名/容器ID] /bin/bash
mysqladmin -u root password [新密码]

在命令行中使用以下命令验证密码是否设置成功。

mysql -u root -p[新密码]

4. 检查应用程序连接 MySQL 时使用的地址和端口号是否正确。

应用程序连接 MySQL 时应该使用容器的 IP 地址和容器中的 MySQL 端口号。可以参考以下示例:

mysql -h [容器ID] -P [容器中的 MySQL 端口号] -u [用户名] -p[密码]

如果这些方法都没有解决问题,可以尝试重启 Docker,或者重新构建 MySQL 镜像并重新部署。

6、遇到连接不上提示access denied的情况

这个时候可以修改etc/my.cnf这个文件,在【mysqlId】后面增加skip-grant-tables, 跳过权限检测

这里可以参考下面的文章,把容器里面的文件下载在本地,修改后再在上传:【精选】mysql登录报错:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)-优快云博客s文章浏览阅读10w+次,点赞67次,收藏318次。首先解析此英文:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES);在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问。解析的地方有两处:1.Access denied(拒绝访问);错误1045(28000):用户'root'@'localhost'(使用密码:YES)拒绝访问。https://blog.youkuaiyun.com/m0_70556273/article/details/126490767这里使用到

docker cp mysql-container:/etc/my.cnf F:\tools

//修改后

docker cp F:\tools\my.cnf mysql-container:/etc/my.cnf

7、本地使用navicat链接的时候

需要用127.0.0.1作为链接地址,而不是第二步返回的IP

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值