目錄
1.網絡超時
方式1. 網絡連接問題
方式2. Docker鏡像源問題
?方式3.使用國內鏡像源
2.啟動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;