個人名片
🎓作者簡介:java領域優質創作者
🌐個人主頁:碼農阿豪
📞工作室:新空間代碼工作室(提供各種軟件服務)
💌個人郵箱:[2435024119@qq.com]
📱個人微信:15279484656
🌐個人導航網站:www.forff.top
💡座右銘:總有人要贏。為什么不能是我呢?
- 專欄導航:
碼農阿豪系列專欄導航
面試專欄:收集了java相關高頻面試題,面試實戰總結🍻🎉🖥?
Spring5系列專欄:整理了Spring5重要知識點與實戰演練,有案例可直接使用🚀🔧💻
Redis專欄:Redis從零到一學習分享,經驗總結,案例實戰💐📝💡
全棧系列專欄:海納百川有容乃大,可能你想要的東西里面都有🤸🌱🚀
目錄
- Docker 中部署 MySQL 5.7 并遠程連接 Navicat 的完整指南
- 引言
- 1. Docker 環境準備
- 1.1 安裝 Docker(CentOS 7)
- 2. 部署 MySQL 5.7 容器
- 2.1 拉取 MySQL 5.7 鏡像
- 2.2 運行 MySQL 容器
- (1)基本運行方式(適合測試)
- (2)生產環境推薦(數據持久化+自動重啟)
- 3. MySQL 遠程訪問配置
- 3.1 進入 MySQL 容器
- 3.2 創建遠程訪問用戶
- 3.3 檢查用戶權限
- 4. Windows Navicat 連接 Docker MySQL
- 4.1 確保網絡可達
- 4.2 Navicat 連接配置
- 5. 常見問題排查
- 5.1 連接被拒絕
- 5.2 防火墻問題
- 5.3 用戶權限不足
- 6. 安全優化建議
- 7. 總結
Docker 中部署 MySQL 5.7 并遠程連接 Navicat 的完整指南
引言
MySQL 是最流行的關系型數據庫之一,而 Docker 提供了輕量級、可移植的容器化解決方案。本文將詳細介紹如何在 CentOS 7 上使用 Docker 部署 MySQL 5.7,并通過 Windows 上的 Navicat 進行遠程連接。內容涵蓋:
- Docker 安裝與 MySQL 容器部署
- MySQL 5.7 的配置與權限管理
- Navicat 遠程連接及常見問題排查
- 安全優化建議
適用于 開發、測試及生產環境,確保數據持久化、高可用性和安全性。
1. Docker 環境準備
1.1 安裝 Docker(CentOS 7)
在 CentOS 7 上安裝 Docker:
# 安裝依賴
sudo yum install -y yum-utils# 添加 Docker 官方倉庫
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安裝 Docker
sudo yum install docker-ce docker-ce-cli containerd.io -y# 啟動并設置開機自啟
sudo systemctl start docker
sudo systemctl enable docker# 驗證安裝
docker --version
輸出應類似:
Docker version 20.10.12, build e91ed57
2. 部署 MySQL 5.7 容器
2.1 拉取 MySQL 5.7 鏡像
docker pull mysql:5.7
2.2 運行 MySQL 容器
(1)基本運行方式(適合測試)
docker run -d \--name mysql57 \-e MYSQL_ROOT_PASSWORD=yourpassword \-p 3306:3306 \mysql:5.7
(2)生產環境推薦(數據持久化+自動重啟)
docker run -d \--name mysql57 \-e MYSQL_ROOT_PASSWORD=yourpassword \-p 3306:3306 \-v /data/mysql:/var/lib/mysql \--restart unless-stopped \mysql:5.7 \--character-set-server=utf8mb4 \--collation-server=utf8mb4_unicode_ci \--bind-address=0.0.0.0
參數說明:
-v /data/mysql:/var/lib/mysql
:數據持久化存儲--restart unless-stopped
:容器異常退出時自動重啟--bind-address=0.0.0.0
:允許遠程連接
3. MySQL 遠程訪問配置
3.1 進入 MySQL 容器
docker exec -it mysql57 mysql -uroot -p
輸入密碼后進入 MySQL Shell。
3.2 創建遠程訪問用戶
-- 創建新用戶(避免直接使用 root)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPass123!';-- 授予所有權限(生產環境建議按需授權)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;-- 刷新權限
FLUSH PRIVILEGES;
3.3 檢查用戶權限
SELECT host, user FROM mysql.user;
輸出應包含:
+-----------+-------------+
| host | user |
+-----------+-------------+
| % | remote_user |
| localhost | root |
+-----------+-------------+
4. Windows Navicat 連接 Docker MySQL
4.1 確保網絡可達
- 如果 Docker 運行在本地:直接使用
127.0.0.1:3306
- 如果 Docker 運行在遠程服務器:
- 確保服務器防火墻開放 3306 端口:
sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --reload
- 云服務器需配置安全組規則(如 AWS、阿里云)
- 確保服務器防火墻開放 3306 端口:
4.2 Navicat 連接配置
- 打開 Navicat → 新建連接 → MySQL
- 填寫連接信息:
- 連接名:Docker MySQL
- 主機:服務器IP(或
127.0.0.1
) - 端口:
3306
- 用戶名:
remote_user
- 密碼:
StrongPass123!
- 測試連接 → 確認
(示意圖)
5. 常見問題排查
5.1 連接被拒絕
# 檢查容器是否運行
docker ps# 查看端口映射
docker port mysql57# 檢查 MySQL 日志
docker logs mysql57
5.2 防火墻問題
# CentOS 7 開放端口
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
5.3 用戶權限不足
-- 檢查用戶權限
SHOW GRANTS FOR 'remote_user'@'%';
6. 安全優化建議
- 避免使用 root 遠程連接
- 限制訪問 IP:
GRANT ALL ON *.* TO 'user'@'192.168.1.%' IDENTIFIED BY 'password';
- 啟用 SSL 加密(可選):
docker run -v /mysql/ssl:/etc/mysql/ssl ... mysql:5.7 --ssl-ca=/etc/mysql/ssl/ca.pem --ssl-cert=/etc/mysql/ssl/server-cert.pem --ssl-key=/etc/mysql/ssl/server-key.pem
- 定期備份數據:
docker exec mysql57 mysqldump -uroot -p --all-databases > backup.sql
7. 總結
本文詳細介紹了:
- Docker 部署 MySQL 5.7(含數據持久化)
- 遠程用戶權限配置
- Navicat 連接方法
- 故障排查與安全優化
通過 Docker 運行 MySQL 不僅簡化了環境配置,還便于遷移和版本管理。結合 Navicat 的圖形化管理,可極大提升開發效率。
適用場景:
- 本地開發測試
- 云服務器數據庫部署
- 微服務架構中的數據庫容器化
進一步學習:
- MySQL 8.0 容器化部署
- Navicat 高級使用技巧
附錄:完整 Docker Compose 示例
version: '3.8'
services:mysql:image: mysql:5.7container_name: mysql57environment:MYSQL_ROOT_PASSWORD: yourpasswordMYSQL_USER: remote_userMYSQL_PASSWORD: StrongPass123!ports:- "3306:3306"volumes:- /data/mysql:/var/lib/mysqlrestart: unless-stoppedcommand:--character-set-server=utf8mb4--collation-server=utf8mb4_unicode_ci--bind-address=0.0.0.0
使用方式:
docker-compose up -d
版權聲明
? 2023 數據庫與 Docker 實踐指南。轉載請注明出處。