M2 Docker安装MySQL

在开发和部署过程中,我们经常需要使用MySQL作为数据库。为了方便地管理和使用MySQL,我们可以使用Docker来安装和运行MySQL。Docker是一个开源的容器化平台,可以帮助我们快速构建、打包和部署应用程序。

本文将介绍如何使用Docker来安装和运行MySQL,并提供相应的代码示例。

准备工作

在开始之前,我们需要先安装Docker。Docker支持多个平台,你可以根据自己的操作系统选择合适的安装方式。安装完成后,我们可以通过docker --version命令来检查Docker是否成功安装。

$ docker --version
Docker version 20.10.6, build 370c289

下载MySQL镜像

在安装和运行MySQL之前,我们需要先下载MySQL的Docker镜像。Docker镜像是一个打包好的应用程序和其依赖的文件系统,可以直接在Docker容器中运行。

使用以下命令来下载MySQL的最新版本镜像:

$ docker pull mysql

运行MySQL容器

下载完成MySQL镜像后,我们可以使用以下命令来运行一个MySQL容器:

$ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

上述命令中的参数说明如下:

  • --name mysql-container:指定容器的名称为mysql-container,你可以根据需要自行修改。
  • -e MYSQL_ROOT_PASSWORD=123456:设置MySQL的root用户的密码为123456,你可以根据需要修改。
  • -p 3306:3306:将容器内的MySQL服务的3306端口映射到宿主机的3306端口,方便我们通过宿主机访问MySQL。
  • -d mysql:指定要运行的镜像为MySQL。

运行完上述命令后,我们可以使用docker ps命令来查看正在运行的容器:

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
8c0e1209134b   mysql     "docker-entrypoint.s…"   2 seconds ago   Up 1 second    33060/tcp, 0.0.0.0:3306->3306/tcp   mysql-container

可以看到,mysql-container容器正在运行,并通过0.0.0.0:3306->3306/tcp端口映射到宿主机。

连接MySQL数据库

现在,我们可以使用任意MySQL客户端工具来连接到MySQL数据库了。在连接时,我们需要指定MySQL服务器的主机地址、端口、用户名和密码。

例如,我们可以使用命令行工具mysql来连接MySQL数据库:

$ mysql -h 127.0.0.1 -P 3306 -u root -p

然后,我们需要输入密码123456来登录到MySQL数据库。

除了命令行工具,还有很多图形化工具可以方便地连接和管理MySQL数据库,例如[phpMyAdmin]( Workbench](

使用MySQL

一旦成功连接到MySQL数据库,我们可以执行各种数据库操作,例如创建数据库、创建表、插入数据等。以下是一些常用的MySQL命令:

  • 创建数据库:

    CREATE DATABASE mydb;
    
  • 使用数据库:

    USE mydb;
    
  • 创建表:

    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50),
        email VARCHAR(50)
    );
    
  • 插入数据:

    INSERT INTO users (name, email) VALUES ('John', 'john@example.com');
    
  • 查询数据:

    SELECT * FROM users;
    
  • 更新数据:

    UPDATE users SET email='john@example.org' WHERE id=1;
    
  • 删除数据:

    DELETE FROM users WHERE id=1;
    

关系图

下面是一个简单的关系图,表示了MySQL中的表之间的关系。

erDiagram
    CUSTOMER ||--o{ ORDER : places