0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中如何使用Docker安装MySQL

jf_78858299 来源:运维漫谈 作者:运维漫谈 2023-05-12 16:22 次阅读

如果您是 MySQL 的新手或希望快速轻松地安装 MySQL 数据库的人,那么本文适合您,在本文中,我们将学习如何在 Linux 中使用 Docker 和 Docker compose 设置 MySQL。

让我们首先设置 docker 环境来启动 MySQL 容器。

1. 安装 Docker

在启动 MySQL docker 容器之前,您需要在您的机器上安装 docker 和 docker-compose。

您还可以参考下面给出的官方 Docker 文档链接,了解如何设置 Docker 和 Docker compose。

https://docs.docker.com/engine/install/
https://docs.docker.com/compose/install/

您可以运行以下命令来检查您正在运行的 docker 和 docker-compose 版本。

$ docker --version
Docker version 20.10.11, build dea9396
$ docker-compose --version
docker-compose version 1.29.2, build unknown

2. 下载 MySQL Docker 镜像

前往Docker Hub获取MySQL docker 镜像。重要的是您必须决定要运行的 MySQL 版本。

运行以下命令将 MySQL 映像从 docker hub 拉到您的机器上。

$ docker pull mysql:latest

注意:没有必要使用标签“ latest”,默认情况下它会拉取最新的图像。

要检查图像是否在本地可用,您可以运行以下命令:

$ docker images mysql

示例输出:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    b05128b000dd   12 days ago   516MB

现在图像已准备好启动容器。您也可以跳过此步骤并运行“ docker run”命令,如下一节所示,如果本地不可用,它将拉取映像。

3. 启动 MySQL 容器

运行以下命令来启动 MySQL docker 容器:

$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql

图片

让我们分解上面的命令,看看每个标志的作用。

  • --name→ 为您的容器命名。如果您未指定此标志,docker 将分配一些随机生成的名称。
  • -p→ 端口映射。MySQL 将侦听端口,3306因此我们将端口 ( 3306→ 3306) 从您的主机映射到 docker 容器。主机端口不必是3306,它可以是任何可用的。

netstat在您的本地机器上运行以下命令以检查容器启动后映射的端口是否正在侦听。

$ netstat -tlnup | grep -i 3306

示例输出:

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 168870/docker-proxy 
tcp6 0 0 :::3306 :::* LISTEN 168878/docker-proxy
  • -v→ 将卷附加到容器。docker 的默认行为是一旦容器被移除就不会持久化数据,因此您将丢失所有数据。

为了创建持久存储,我创建了名为“ mysql_volume”的卷。MySQL 将数据存储在/var/lib/mysql/容器内,并在此处映射到 localhost 目录/var/lib/docker/volumes/mysql_volume1/_data,因此您的数据将是持久的。

  • -d→ 将以分离模式启动和运行容器。如果省略该-d标志,那么您将在终端中看到容器启动日志,您必须打开一个新的终端会话才能连接到容器。
  • -e→ 环境变量。您必须使用以下任一参数设置 mysql root 用户密码。
  • MYSQL_ROOT_PASSWORD → 使用此环境变量设置您自己的密码。
  • MYSQL_ALLOW_EMPTY_PASSWORD→ 将设置空白或空密码。你必须设置MYSQL_ALLOW_EMPTY_PASSWORD=1.
  • MYSQL_RANDOM_ROOT_PASSWORD→ 容器启动时会生成随机密码。您必须设置MYSQL_RANDOM_ROOT_PASSWORD=1生成随机密码。

如果跳过此步骤,则会引发如下所示的错误。

图片

4. 检查 MySQL 容器状态

您可以使用以下命令检查启动的容器状态:

$ docker ps

示例输出:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
e1fb895f6f0f   mysql     "docker-entrypoint.s..."   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

5.连接到MySQL数据库

运行以下命令连接到 MySQL 容器。

$ docker exec -it mysql bash

root通过运行以下命令以用户身份连接到 MySQL 数据库。就我而言,我已经通过MYSQL_ROOT_PASSWORD.

$ mysql -u root -p

图片

如果您MYSQL_RANDOM_ROOT_PASSWORD=1在启动容器时使用过,那么您可以从日志中获取自动生成的密码。

$ docker logs
$ docker logs mysql

图片

自动生成的root密码会很长,不需要记住。您可以通过运行以下查询来重置 root 密码。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlpassword';

将密码“mysqlpassword”替换为您自己的密码。您还可以创建自己的用户并根据需要授予他权限。

6. 加载样本数据

设置 mysql 的主要目的是加载一些数据并对其运行查询。有几种方法可以加载数据。我有一个名为“ load_data.sql”的示例文件,其中包含以下查询。

如果不存在足球,则创建数据库;

CREATE DATABASE IF NOT EXISTS football;

USE football;

CREATE TABLE IF NOT EXISTS players (
    player_name     VARCHAR(16)     NOT NULL,
    player_age      INT             NOT NULL,
    player_club     VARCHAR(16)     NOT NULL,
    player_country  VARCHAR(16)     NOT NULL
);

INSERT INTO players VALUES ("Messi",34,"PSG","Argentina");
INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal");
INSERT INTO players VALUES ("Neymar",29,"PSG","Brazil");
INSERT INTO players VALUES ("Kane",28,"SPURS","England");
INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgium");

第一种方法是使用“ docker cp”命令将数据从本地机器复制到 docker 容器。

$ docker cp load_data.sql mysql:/tmp
$ docker exec -it mysql bash
$ ls -l /tmp/

现在您可以连接到 mysql 客户端并运行 source 命令或将文件重定向到 mysql 客户端。

$ mysql -u root -p
mysql> source /tmp/load_data.sql

或者

$ mysql -u root -p < /tmp/load_data.sql

连接到数据库并查询您的表。

$ mysql -u root -p
mysql> show databases;
mysql> use football;
mysql> show tables;
mysql> select * from players;

图片

第二种方法是.sql在运行docker exec命令时重定向文件。

$ docker exec -i mysql mysql -u root -p < load_data.sql

7. 使用 Docker-Compose 设置 MySQL 容器

docker run您可以使用docker-compose快速启动容器,而不是拉取镜像并运行命令。当您要创建多个容器时,Docker-compose 最适合。

创建一个名为docker-compose.yml或docker-compose.yaml文件的文件。复制并粘贴以下 yaml 代码。

version: '3.8'
services:
  database:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: temp1234
    ports:
      - "3306:3306"
    volumes:
      - mysql_volume:/var/lib/mysql
volumes:
  mysql_compose_volume:

现在运行以下命令,这将启动 MySQL docker 容器。

$ docker-compose up

图片

运行以下命令以使用 docker-compose 检查已启动容器的状态:

$ docker-compose ps

示例输出:

Name              Command             State                          Ports                       
-------------------------------------------------------------------------------------------------
mysql   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp

8. 使用 MySQL Workbench 连接到 MySQL 数据库

到目前为止,我们已经看到了如何从容器内部使用 mysql 客户端连接到数据库。您还可以使用任何 GUI 客户端(如 mysql workbench、dbeaver、Heidi SQL 等)连接到数据库。

无论您使用什么 GUI 客户端,都要注意的重要一点是,启动容器时映射的端口是什么。

就我而言,我已经映射了localhost ( 3306) ->容器( 3306)。所以如果我必须建立到数据库的连接,我必须连接到localhost:3306或127.0.01:3306。

我使用 MySQL Workbench 作为我的 GUI 客户端,如果您还没有在您的机器上安装 MySQL Workbench,那么您可以使用以下说明进行安装。

8.1. 在 Linux 中安装 MySQL Workbench

导航到官方站点下载包文件,您必须选择您的操作系统才能下载.deb或.rpm文件。

图片

在下一步中,它会要求您登录或注册,您可以通过单击“不,谢谢,只需开始我的下载”选项跳过登录或注册。

图片

在基于 Debian 的系统上,安装 MySQL Workbench,如下所示:

$ cd
$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb

在基于 RHEL 的系统上,安装 MySQL Workbench,如下所示:

$ cd
$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm

安装完成后,您可以从菜单或破折号启动 mysql 工作台。

图片

8.2. 连接到 MySQL 数据库

连接到在 docker 容器内运行的数据库,您应该尝试连接到localhost:3306或localhost:取决于您的容器的设置方式。

图片

在连接到数据库之前,您可以按“测试连接”来检查 MySQL Workbench 是否能够成功连接到数据库实例。

图片

现在您可以开始针对您创建的表运行查询。

图片

9. 结论

在本文中,我们简要了解了如何在 docker 中启动 MySQL 容器的使用docker run和docker-compose方法,如果你想设置 MySQL 用于测试或学习目的,Docker 就足够了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63370
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21878
  • MySQL
    +关注

    关注

    1

    文章

    775

    浏览量

    26005
收藏 人收藏

    评论

    相关推荐

    Linux系统如何使用rpm包方式安装MySQL

    RPM包上传到服务器的目录,然后执行如下rpm命令进行安装:[root@oldboytools]#rpm -qa|grep mysql#
    发表于 12-28 16:29

    linux yum安装命令之MySQL

    有自身的问题,例如它继承了rpm包的无法定制化安装的问题,另外一个缺点是采用默认的yum安装时,一般yum源带的软件版本都比较低,例如:截止作者写作本文时,使用CentOS6.8Linux默认yum
    发表于 12-28 16:31

    linuxmysql安装方法之常规安装

    MySQL5.2.xx及以前的产品系列,是最常规的编译方式,在当下的互联网企业,此种编译安装的方法已经很少使用了,原因是第一条产品线的产品(MySQL5.2.xx及以前的产品系列)用
    发表于 12-28 16:34

    使用docker安装mysql5.6实例的恢复方法

    2018-12-23 从aliyun的drs全备恢复数据库到dockermysql
    发表于 03-14 11:26

    ubuntu系统安装docker

    linux-4.1.15软件安装:[size=14.6667px]sudo apt-get install docker-engine发现安装成功了,也是运行不起来。1.在内核
    发表于 05-07 16:56

    LinuxDocker安装操作

    1. 安装Dockeryum install docker.x86_64
    发表于 07-12 07:30

    mysql数据库跑在docker

    docker中使用MySQL数据库
    发表于 08-15 14:26

    docker安装nginx的详细过程

    Centos7安装nginx(二)之docker安装nginx
    发表于 10-23 17:10

    嵌入式系统安装docker的步骤

    ,硬件或BSP升级只要保证接口兼容,运行在容器里面的应用就完全不受影响。一、设计思路想要在arm linux安装docker,大多是基于armbian文件系统上安装
    发表于 12-22 06:27

    安装MySql镜像的步骤

    -p #从host连接dockerMySql例如:> mysql -h 192.168.0.1 -P 3306 -u root -p如果可以进入
    发表于 10-19 14:55

    linux安装Apache+Php+Mysql

    linux安装Apache+Php+Mysql(数字电源技术及其应用)-文档为在linux安装Apache+Php+
    发表于 09-18 16:09 5次下载
    在<b class='flag-5'>linux</b>下<b class='flag-5'>安装</b>Apache+Php+<b class='flag-5'>Mysql</b>

    linux云服务器如何安装mysql

    本教程将介绍linux云服务器如何安装mysql? 一、要求 运行 Linux(任何发行版)的云服务器。 LAMP 堆栈(Apache、MySQL
    发表于 01-10 16:39 1717次阅读
    <b class='flag-5'>linux</b>云服务器如何<b class='flag-5'>安装</b><b class='flag-5'>mysql</b>

    linux docker安装部署

    了解如何在Linux安装和部署Docker。 一、安装Docker 在开始之前,请确保您的Linux
    的头像 发表于 11-23 09:27 436次阅读

    docker部署mysql的坏处

    Docker 是一种虚拟化技术,它允许开发人员在容器内打包应用程序及其所有依赖项,从而实现在不同环境中运行相同的应用程序的能力。然而,在使用 Docker 部署 MySQL 时,也存在一些潜在
    的头像 发表于 11-23 09:29 703次阅读

    如何利用树莓派安装DockerDocker-compose呢?

    本文主要演示了树莓派如何安装DockerDocker-compose的过程。
    的头像 发表于 12-14 16:19 1199次阅读
    如何利用树莓派<b class='flag-5'>安装</b><b class='flag-5'>Docker</b>和<b class='flag-5'>Docker</b>-compose呢?