使用 Docker Shell 执行 MySQL SQL 语句

在现代软件开发中,容器化技术已经成为一种流行的方法。Docker 是最广泛使用的容器管理平台之一,它让应用的部署和管理变得更加高效。而 MySQL 作为一种流行的关系型数据库,常与 Docker 联合使用,使数据库更易于管理。本文将介绍如何在 Docker 容器中使用 Shell 命令执行 MySQL SQL 语句,并提供详细的代码示例。

一、Docker 和 MySQL 简介

Docker 是一个开源的容器化平台,使得开发者能够创建、部署和运行应用程序,而不必担心与环境互相干扰。MySQL 是一种开源的关系型数据库管理系统,广泛应用于各种项目中,以其高效、灵活的特点受到开发者的喜爱。

安装 Docker

若您还未安装 Docker,请参照如下步骤进行安装:

  1. 首先更新系统包
sudo apt-get update
  1. 安装 Docker
sudo apt-get install docker.io
  1. 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

启动 MySQL 容器

在使用 Docker 执行 MySQL SQL 语句之前,您需要启动一个 MySQL 容器。使用以下命令来运行 MySQL 5.7 的 Docker 镜像:

docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7

在这个命令中,我们使用 -e 标志设置了 MySQL 的根用户密码。

验证 MySQL 容器是否运行

您可以使用以下命令检查 MySQL 容器的运行状态:

docker ps

如果容器正在运行,您应该看到类似于以下的输出:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abcdef123456 mysql:5.7 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp mysql-server

二、在 Docker 中执行 MySQL SQL 语句

1. 进入 MySQL 容器

要在 Docker 容器中执行 SQL 语句,您首先需要进入 MySQL 容器。可以使用以下命令进入容器的交互式终端:

docker exec -it mysql-server mysql -uroot -p

您会被要求输入密码(上面设置的 my-secret-pw)。

2. 创建数据库和表

一旦进入 MySQL 提示符,您可以创建一个数据库和一张表。

CREATE DATABASE example_db;
USE example_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);

您可以使用以下命令查看创建的数据库和表:

SHOW DATABASES;
SHOW TABLES;

3. 插入数据

接下来,您可以在 users 表中插入一些数据。

INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane Smith', 'jane@example.com');

4. 查询数据

您可以通过 SQL 查询来查看插入的数据:

SELECT * FROM users;
查询结果示例
id name email
1 John Doe john@example.com
2 Jane Smith jane@example.com

5. 退出 MySQL 提示符

完成所有操作后,可以通过输入 exit 退出 MySQL 提示符。

三、使用 Shell 执行 MySQL SQL

除了进入容器的交互式终端外,您还可以直接通过 Docker Shell 执行 SQL 语句。以下是一个示例:

docker exec -i mysql-server mysql -uroot -pmy-secret-pw -e "SELECT * FROM example_db.users;"

在这个命令中,我们使用 -i 标志表示输入,并通过 -e 参数传递 SQL 语句。

四、状态图表示

接下来,我们可以使用 Mermaid 语法绘制一个状态图,表示 Docker 和 MySQL 之间的交互。

stateDiagram
    [*] --> Docker_Container
    Docker_Container --> MySQL_Running
    MySQL_Running --> SQL_Commands
    SQL_Commands --> Data_Manipulated
    Data_Manipulated --> MySQL_Running

结尾

本文介绍了如何在 Docker 容器中使用 Shell 命令执行 MySQL SQL 语句。我们首先设置了 Docker 和 MySQL 环境,然后展示了如何创建数据库和表、插入数据以及执行查询,最后总结了如何直接通过 Shell 执行 SQL 语句。希望本文对您在使用 Docker 和 MySQL 时有所帮助!如果您对相关技术有进一步的需求和问题,欢迎留言讨论。