在开发和测试过程中,快速搭建一个独立、干净的数据库环境是至关重要的。传统安装MySQL过程繁琐,而使用Docker,你可以在一分钟内完成所有工作。本文将手把手教你如何使用Docker安装MySQL,并详细说明如何连接、使用和管理这个数据库。
一、为什么选择Docker安装MySQL?
-
极速部署:无需下载安装包、配置系统服务,一条命令即可运行。
-
环境隔离:数据库环境与宿主机完全隔离,不会污染系统,可以轻松运行多个不同版本的MySQL实例。
-
易于清理:测试完成后,直接删除容器和镜像即可彻底清除,不留任何痕迹。
-
一致性:确保开发、测试、生产环境使用完全相同的MySQL版本和配置。
二、一步到位:运行MySQL容器
这是最核心的一步。我们使用 docker run 命令来从Docker Hub拉取官方MySQL镜像并启动一个容器。
打开你的终端,执行以下命令:
bash
docker run -d \ --name mysql-server \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -p 3306:3306 \ -v mysql_data:/var/lib/mysql \ mysql:8.0
让我们拆解这条命令的每个部分:
-
docker run:创建并启动一个新容器。 -
-d:在“后台”(分离模式)运行容器。 -
--name mysql-server:为容器起一个有意义的名字,方便后续管理(启动、停止等)。 -
-e MYSQL_ROOT_PASSWORD=my-secret-pw:设置环境变量。这是最关键的一步,它配置了MySQLroot用户的密码。请务必将其中的my-secret-pw替换为你自己的强密码。 -
-p 3306:3306:端口映射。-
第一个
3306是宿主机的端口。 -
第二个
3306是容器内MySQL服务的默认端口。 -
含义:将所有发送到宿主机3306端口的请求,转发到容器的3306端口。
-
-
-v mysql_data:/var/lib/mysql:数据卷挂载。-
mysql_data是Docker管理卷的名称(Docker会自动创建)。 -
/var/lib/mysql是容器内MySQL存储数据文件的位置。 -
重要性:这个操作实现了数据持久化。即使你删除了容器,你的数据库数据仍然保留在
mysql_data卷中。下次启动新容器时重新挂载即可恢复。
-
-
mysql:8.0:指定要使用的镜像名和标签(版本)。这里我们使用MySQL 8.0版本。你可以替换为mysql:5.7等其他版本。
三、验证安装与连接数据库
容器运行后,如何确认它工作正常并开始使用呢?
1. 检查容器状态
bash
docker ps
你应该能看到一个名为 mysql-server 的容器状态为 Up。
2. 方法一:通过命令行客户端直接连接(推荐)
最直接的方式是进入容器内部,使用MySQL自带的命令行客户端。
bash
# 执行容器内的mysql客户端 docker exec -it mysql-server mysql -u root -p
系统会提示你输入密码,输入之前在 -e MYSQL_ROOT_PASSWORD 中设置的密码(如 my-secret-pw)即可。
连接成功后的操作示例:
一旦进入MySQL命令行(提示符变为 mysql>),你就可以执行任何SQL命令。
sql
-- 显示所有数据库
SHOW DATABASES;
-- 创建一个新的数据库
CREATE DATABASE my_docker_db;
-- 使用这个新数据库
USE my_docker_db;
-- 创建一张新表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100)
);
-- 向表中插入数据
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
-- 查询数据
SELECT * FROM users;
3. 方法二:使用宿主机上的MySQL客户端连接
如果你在Ubuntu宿主机上也安装了MySQL客户端,可以直接连接。
-
首先,安装MySQL客户端:
bash
sudo apt-get update sudo apt-get install mysql-client
-
然后,连接至容器化的MySQL服务器:
bash
mysql -h 127.0.0.1 -P 3306 -u root -p
-
-h 127.0.0.1:指定主机为本地。 -
-P 3306:指定端口(就是你映射的宿主机端口)。
-
4. 方法三:使用图形化工具(如DBeaver、MySQL Workbench)连接
你也可以使用任何你喜欢的数据库管理工具。
-
Host:
127.0.0.1或localhost -
Port:
3306 -
Username:
root -
Password: 你设置的密码(如
my-secret-pw)
四、日常管理与常用命令
学会如何管理你的MySQL容器至关重要。
-
停止容器:
bash
docker stop mysql-server
-
启动已停止的容器:
bash
docker start mysql-server
-
重启容器:
bash
docker restart mysql-server
-
查看容器日志(用于排查问题):
bash
docker logs mysql-server
-
进入容器内部的bash shell(而不直接启动MySQL客户端):
bash
docker exec -it mysql-server bash
-
备份数据库(导出SQL文件):
bash
docker exec mysql-server mysqldump -u root -pmy-secret-pw my_docker_db > backup.sql
-
彻底删除容器(谨慎操作!数据会因卷的挂载方式而决定是否保留):
bash
docker stop mysql-server docker rm mysql-server # 注意:此操作不会删除 mysql_data 卷,你的数据是安全的。
五、高级配置:自定义MySQL配置
如果你想使用自定义的 my.cnf 配置文件,可以将其挂载到容器中。
-
在宿主机上创建一个配置文件,例如
/path/to/custom/my.cnf。 -
运行容器时添加一个
-v挂载选项:bash
docker run -d \ --name mysql-server \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -p 3306:3306 \ -v mysql_data:/var/lib/mysql \ -v /path/to/custom/:/etc/mysql/conf.d/ \ mysql:8.0
这样,容器会自动加载
/etc/mysql/conf.d/目录下所有以.cnf结尾的配置文件。
总结
通过以上步骤,你已经成功地:
-
使用
docker run命令一键部署了MySQL。 -
通过环境变量安全地设置了root密码。
-
使用数据卷实现了数据持久化。
-
通过多种方式连接到了容器内的MySQL并进行基本操作。
-
学会了日常的管理命令。
Docker让MySQL的搭建和管理变得前所未有的简单。现在,你可以尽情地在你的新数据库上进行开发测试,而无需担心搞乱你的主机环境了!
616

被折叠的 条评论
为什么被折叠?



