【Docker】Docker中安装MySQL数据库

1. 前言

虽然 docker 安装 mysql 不是一个很好的方案,但是为了个人使用方便,使用 docker 安装 mysql 还是没什么问题的。

且安装时把主机文件挂载到容器上,保证了 mysql 的持久化,对开发和测试也很友好。

2. Docker中安装MySQL服务

以下以mysql5.7版本为例,mysql8.0的步骤也是一样的

2.1. 查看可用的MySQL版本’

# 搜索镜像
docker search mysql

2.2. 拉取MySQL镜像

# 拉取镜像--指定
docker pull mysql:8.0

# 或者
docker pull mysql:latest

2.3. 运行容器

MySQL是常用的关系型数据库,一般的,希望它能永久的保存数据,哪怕是当容器被删除了数据也不要删除,此时就需要把主机文件夹挂载到容器上,这样可以保证即使容器删除后新建的MySQL容器可以使用之前的数据。

  • 先准备好本地的目录
mkdir -p /mydata/mysql/log
mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/conf
  • 挂载目录,启动容器
# Docker启动MySQL容
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=abcd.1243 -d mysql:8.0

-p 3306:3306:指定宿主机端口与容器端口映射关系

-e:指定容器需要的变量

-d:后台运行mysql容器

2.5. 查看正在运行的容器

# 查看正在运行的容器
docker ps
# 查看所有的docker容器
docker ps -a

这个时候如果显示的是up状态,那就是启动成功了。如果是restarting,说明是有问题的。我们可以查看日志:
docker logs -f mysql

2.6. 查看容器内部

docker exec -it mysql /bin/bash

登录mysql
mysql -uroot -p

在这里插入图片描述

2.8. 在宿主机连接到容器的MySQL

# 用命令行测试端口连通性
telnet localhost 3306
# 查看能不能连接上MySQL
mysql -u root -P 3306 -h 127.0.0.1 -proot
# 查看容器日志
docker logs -f mysql

3. 如果是MySQL8.0可能需要执行

不得不说,mysql的docker镜像很人性化,不仅默认出产设置帮我们取消了安全限制,也允许root远程登录。

注:docker安装mysql一般用于开发测试,所以默认出厂设置帮用户做了一些设置。但是Linux下安装的mysql8.0默认是有一些安全限制和限制root远程登录。

3.1. 授权root远程登录

  • 进入mysql容器
docker exec -it mysql /bin/bash
登录mysql
mysql -uroot -p
  • 创建root@'%'账号
mysql> create user root@'%' identified by 'root';
Query OK, 0 rows affected (0.01 sec)

mysql>
  • 授权所有权限给root@'%'账号
mysql> grant all on *.* to root@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> 

3.2. 取消密码强度限制

  • 卸载"验证密码"组件
mysql> UNINSTALL COMPONENT 'file://component_validate_password';
ERROR 3537 (HY000): Component specified by URN 'file://component_validate_password' to unload has not been loaded before.
mysql>

docker的mysql镜像默认没有安装

  • 卸载"验证密码"插件
mysql> UNINSTALL PLUGIN validate_password;
ERROR 1305 (42000): PLUGIN validate_password does not exist
mysql> 
docker的mysql镜像默认没有安装
  1. 参考资料
    在生产环境安装MySQL 8.0

4、使用Docker Compose安装(做快速部署用)

1、安装Docker和Docker Compose

首先,确保你的系统已经安装了Docker和Docker Compose。你可以根据操作系统的不同,按照官方文档的指引进行安装。

2、创建Docker Compose文件:

在你的项目目录下创建一个名为docker-compose.yml,代码内容如下。在下面的配置中,我们使用了MySQL官方提供的镜像,并将MySQL的默认端口3306映射到主机的3306端口。这里需要将your_password替换为咱们自己的MySQL root密码。此外,我们还将MySQL的数据目录/var/lib/mysql映射到主机的./data目录,以便数据可以持久化保存。

 mysql:
 image: mysql:latest ports:
 - "3306:3306"
 environment:
 - MYSQL_ROOT_PASSWORD=your_password volumes:
 - ./data:/var/lib/mysql

3、启动MySQL容器

打开终端,进入到包含docker-compose.yml文件的目录,并执行以下命令启动MySQL容器。Docker将会下载MySQL镜像,并启动一个MySQL容器。

bashdocker-compose up -d

4、验证MySQL容器是否正常运行

执行以下命令,查看MySQL容器的运行状态,如果MySQL容器处于运行状态,则表示MySQL已成功安装和启动。

bashdocker-compose ps

5、连接到MySQL容器

现在可以使用任何MySQL客户端工具(如MySQL命令行客户端或可视化工具)连接到MySQL容器。在连接时,需要使用以下信息:

  • 主机:localhost- 端口:3306- 用户名:root- 密码:您在docker-compose.yml文件中设置的密码通过连接到MySQL容器,您可以执行SQL语句、创建数据库和表等操作。

6、停止和清理

如果想停止MySQL容器并清理相关的容器和资源,可以执行以下命令,Docker将会停止并删除MySQL容器和相关的网络和卷。

bashdocker-compose down

相关推荐

  1. 数据集群安装MySQL

    2024-07-15 10:32:07       42 阅读
  2. Linux安装MySQL数据库(Red Hat7.9安装MySQL5.7数据库)

    2024-07-15 10:32:07       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 10:32:07       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 10:32:07       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 10:32:07       57 阅读
  4. Python语言-面向对象

    2024-07-15 10:32:07       68 阅读

热门阅读

  1. [C++]位图+布隆过滤器

    2024-07-15 10:32:07       24 阅读
  2. GESP CCF C++ 五级认证真题 2024年6月

    2024-07-15 10:32:07       27 阅读
  3. 使用Python实现携程并发处理

    2024-07-15 10:32:07       23 阅读
  4. 为什么请求接口会在后面接?_t=

    2024-07-15 10:32:07       19 阅读
  5. Why does Wi-Fi consume more battery power than cellular data?

    2024-07-15 10:32:07       23 阅读
  6. shell中关于数组的使用

    2024-07-15 10:32:07       23 阅读
  7. 聊聊自动驾驶中的LiDAR和Radar

    2024-07-15 10:32:07       19 阅读
  8. python安全脚本开发简单思路

    2024-07-15 10:32:07       24 阅读