docker配置mysql遇到的问题:网络连接超时、启动mysql失败、navicat无法远程连接mysql

发布于:2025-05-01 ⋅ 阅读:(254) ⋅ 点赞:(0)

目录

1.网络超时

方式1. 网络连接问题

方式2. Docker镜像源问题

 方式3.使用国内镜像源

2.启动mysql镜像失败

3.navicat无法远程连接mysql


1.网络超时

安装MySQL时出现超时问题,可能由多种原因导致:

方式1. 网络连接问题

  • 原因:网络不稳定或速度慢,导致下载MySQL镜像或软件包时超时。

  • 解决方法

    • 检查网络连接,确保网络稳定。

    • 切换到国内镜像源,如使用阿里云的Docker镜像加速器,以提高下载速度。

方式2. Docker镜像源问题

  • 原因:使用国外的Docker镜像源时,访问速度很慢,可能会因为网络问题导致下载超时。

  • 解决方法

配置国内的Docker镜像加速器,如阿里云镜像加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<your-mirror-address>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 方式3.使用国内镜像源

如果没有阿里云的镜像加速器,就使用国内的docker镜像源来拉取

国内常用的Docker镜像加速器地址(无需注册,直接配置):

镜像源 加速器地址
网易 https://hub-mirror.c.163.com
腾讯云 https://mirror.ccs.tencentyun.com
中科大 https://docker.mirrors.ustc.edu.cn
Docker官方中国源 https://registry.docker-cn.com
百度云 https://mirror.baidubce.com

通过编辑 /etc/docker/daemon.json 文件(若文件不存在则创建)来配置镜像源(可配置多个),示例如下:

{
  "registry-mirrors": [
    "https://阿里云专属加速器地址.mirror.aliyuncs.com",  // 替换为你的阿里云地址
    "https://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}
# 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker

2.启动mysql镜像失败

sudo docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-d mysql:5.7 \
-v /mydata/mysql/conf:/etc/mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql

查看容器启动失败(exited),使用 docker logs mysql查看错误信息

从新的日志信息可知,MySQL 容器启动失败是因为 mysqld 无法读取 /etc/mysql/conf.d/ 目录,错误码显示该目录不存在。我们的命令指定的配置文件路径是/etc/mysql/,而容器读取的配置文件路径是/etc/mysql/conf.d/。

在这一行-v /mydata/mysql/conf:/etc/mysql,我们将主机路径/mydata/mysql/conf挂载到容器路径/etc/mysql下,但实际上容器配置在/etc/mysql/conf.d/目录下。

修改启动的配置文件

docker run -d \

--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_password \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
mysql:5.7

启动成功

3.navicat无法远程连接mysql

这个错误表明,你的客户端尝试通过 IP 地址连接到 MySQL 服务器,但服务器拒绝了这个请求。这是因为在 MySQL 中,用户权限是与客户端的 IP 地址绑定的。如果用户 root 没有被授权从  这个 IP 地址进行连接,就会出现这个错误。

docker start mysql 
docker exec -it mysql bash
mysql -uroot -p123456
grant all privileges on *.* to root@'%' identified by '123456' with grant option;
flush privileges;


网站公告

今日签到

点亮在社区的每一天
去签到