【Docker】Docker中安装MySQL数据库

news2024/12/27 15:05:48

文章目录

  • 1. 前言
  • 2. Docker中安装MySQL服务
    • 2.1. 查看可用的MySQL版本
    • 2.2. 拉取MySQL镜像
    • 2.3. 查看本地镜像
    • 2.4. 运行容器
    • 2.5. 查看正在运行的容器
    • 2.6. 查看容器内部
    • 2.7. 授权root远程登录
    • 2.8. 在宿主机连接到容器的MySQL
    • 2.9. 用Navicat连接容器的MySQL
  • 3. 如果是MySQL8.0可能需要执行
    • 3.1. 授权root远程登录
    • 3.2. 取消密码强度限制
  • 4. 参考资料

点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情)

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:5.7

# 或者
docker pull mysql:latest

2.3. 查看本地镜像

使用以下命令来查看是否已安装了 mysql镜像

docker images

2.4. 运行容器

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 \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

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

-v:挂载主机文件夹 /mydata/mysql/data 到 容器/var/lib/mysq 挂载点

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

-it:表示交互式终端;

-d:后台运行mysql容器

2.5. 查看正在运行的容器

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

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

docker logs -f mysql

2.6. 查看容器内部

docker exec -it mysql /bin/bash

2.7. 授权root远程登录

  • 进入容器
docker exec -it mysql /bin/bash
  • 登录mysql
mysql -uroot -p
  • 查看用户、插件
mysql> use mysql;
Database changed
mysql> select host,user,plugin from user;
+-----------+---------------+-----------------------+
| host      | user          | plugin                |
+-----------+---------------+-----------------------+
| localhost | root          | mysql_native_password |
| localhost | mysql.session | mysql_native_password |
| localhost | mysql.sys     | mysql_native_password |
| %         | root          | mysql_native_password |
+-----------+---------------+-----------------------+
4 rows in set (0.00 sec)

mysql> 

查看结果,不仅仅看到了root@'localhost'也看到了root@'%'root@'%'就是允许远程登录的账号,跟我们预期的结果还不一样,只能说mysql的docker镜像做的挺良心的,知道docker更多的是用于开发测试,把root的远程登录直接出厂设置了。

  • 直接退出吧

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

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

2.9. 用Navicat连接容器的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
mysql> use mysql
Database changed
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

mysql>

可以看到出厂就创建了root@'%'账号。如果没有就自行创建下把

  • 创建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镜像默认没有安装

4. 参考资料

在生产环境安装MySQL 8.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/820198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue项目开发常用工具类

防止重复造轮子,将经常用的函数进行记录,也参考网上的并一起进行记录,后续会持续更新常用到的函数工具类方法😉😉 /** 验证手机号是否合格* true--说明合格*/ export function isPhone(phoneStr) {let myreg /^[1][3,…

VMware vCenter Server Appliance VCSA 备份还原

vCenter是VMware管理员的常备工具,要保护它的安全,我们可以借助vCenter备份还原方式来达成目的。 怎么备份vCenter 7.0? vCenter备份包括vCenter Server核心配置、资源清册和历史数据,如统计信息、事件和任务。接下来&#xff0…

【LeetCode每日一题】——1572.矩阵对角线元素的和

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 1572.矩阵对角线元素的和 四【题目描述】 给你一…

HTTP之Session、Cookie 与 Application

目录 简介cookiecookie生命周期 sessionsession生命周期 HTTP cookies示例application 简介 cookie、seesion、application三个都会缓存我们用户状态的数据,使得我们在浏览器访问网站时可以更快速的获取到信息。 主要原因在于HTTP协议是无状态的,我们每…

IO流(4)- 序列化流与反序列化流

目录 1. 序列化流与反序列化流的基本介绍 2. 序列化流的基本用法? 3. 序列化流的作用? 4. 反序列化流的基本用法? 5. 反序列化流的作用 6. 序列化流与反序列化流使用时需要注意的细节(非常重要) 6.1 被序列化的…

90%的测试工程师是这样使用Postman做接口测试的

一:接口测试前准备 接口测试是基于协议的功能黑盒测试,在进行接口测试之前,我们要了解接口的信息,然后才知道怎么来测试一个接口,如何完整的校验接口的响应值。 那么问题来了,那接口信息从哪里获取呢&…

中国AI大模型峰会“封神之作”!开发者不容错过这场夏季盛会

年度最强大模型顶会来袭!喊话中国数百万AI开发者,速来! 硬核来袭!中国AI大模型峰会“封神之作”,开发者们不容错过! 前瞻大模型发展趋势,紧跟这场大会! 中国科技超级碗,大模型最新前…

SpringCloud Alibaba分布式集群要点

1、可通过nginxkeepalived实现nginx高可用集群。 2、nacos集群,在nacos/conf/cluster.conf配置IP:8848,nginx中配置nacos负载均衡,yml文件使用其对应域名即可。 注:服务器之间内网不通 举例:腾讯服务器之间就存在内网不通的现象…

关于bigemap在土地行业的一些应用

选择Bigemap的原因: 由于我们是国营企业单位,管理六万多亩的国有土地,必须要有这样的软件套图 客户之前用的谷歌,后来不能访问了,通过百度搜索到这款软件 使用场景: 使用软件一般都用于套坐标以及空间规…

未来将有可能是元宇宙发展的数字化时代

近年来,元宇宙环境的概念近年来引起了广泛关注,并引发了巨大的舆论浪潮。然而,经济形式的放缓和行业向人工智能的转变所带来的挫折引发了人们对这一 " 雄心勃勃 " 的概念的可行性和时机的质疑。 很明显,一些挑战阻碍了…

Python元编程-装饰器介绍、使用

目录 一、Python元编程装饰器介绍 二、装饰器使用 1. 实现认证和授权功能 2.实现缓存功能 3.实现日志输出功能 三、附录 1. logging.basicConfig介绍 2. 精确到毫秒,打印时间 方法一:使用datetime 方法二:使用time 一、Python元编程…

Eureka 学习笔记4:EurekaClient

版本 awsVersion ‘1.11.277’ EurekaClient 接口实现了 LookupService 接口&#xff0c;拥有唯一的实现类 DiscoveryClient 类。 LookupService 接口提供以下功能&#xff1a; 获取注册表根据应用名称获取应用根据实例 id 获取实例信息 public interface LookupService<…

【MySQL】数据库基本使用

文章目录 一、数据库介绍二、数据库使用2.1 登录MySQL2.2 基本使用2.2.1 显示当前 MySQL 实例中所有的数据库列表2.2.2 创建数据库2.2.3 创建数据库表2.2.4 在表中插入数据2.2.5 在表中查询数据 三、服务器、数据库、表之间的关系四、SQL语句分类五、存储引擎 一、数据库介绍 …

多线程案例(2)

文章目录 多线程案例二二、阻塞式队列 大家好&#xff0c;我是晓星航。今天为大家带来的是 多线程案例二 相关的讲解&#xff01;&#x1f600; 多线程案例二 二、阻塞式队列 阻塞队列是什么 阻塞队列是一种特殊的队列. 也遵守 “先进先出” 的原则. 阻塞队列能是一种线程…

设计走查指南:提升设计质量的关键步骤

在产品设计过程中&#xff0c;确保产品设计质量是至关重要的。设计走查作为一种关键的质量控制方法&#xff0c;能够帮助设计团队发现问题并采取相应措施来提升设计质量。通过有效地进行设计走查&#xff0c;团队可以提高设计作品的一致性、可用性和用户满意度&#xff0c;从而…

正则表达式在格式校验中的应用以及包装类的重要性

文章目录 正则表达式&#xff1a;做格式校验包装类&#xff1a;在基本数据类型与引用数据类型间的桥梁总结 在现代IT技术岗位的面试中&#xff0c;掌握正则表达式的应用以及理解包装类的重要性是非常有益的。这篇博客将围绕这两个主题展开&#xff0c;帮助读者更好地面对面试挑…

Elasticsearch Java客户端和Spring data elasticsearch-Elasticsearch文章三

文章目录 官网版本组件版本说明实现代码地址es Spring Data Repositories例子&#xff1a;ElasticsearchRepository分析 es Spring Data Repositories 关键字es Spring Data Repositories client 加载rest风格客户端直接执行dsl例子响应式客户端-ReactiveElasticsearchClientpo…

【SLAM】LoFTR知多少

1. LoFTR: Detector-Free Local Feature Matching with Transformers PAPER 论文 | LoFTR: Detector-Free Local Feature Matching with Transformers 代码 | CODE: 关键词 | detector-free, local feature matching LoFTR知多少 1. LoFTR: Detector-Free Local Feature M…

DirectX SDK下载安装及开发环境设置

1 DirectX DirectX&#xff08;Direct eXtension&#xff0c;简称DX&#xff09;是由微软公司创建的多媒体编程接口&#xff0c;是一种应用程序接口&#xff08;API&#xff09;。DirectX可以让以windows为平台的游戏或多媒体程序获得更高的执行效率&#xff0c;加强3D图形和声…

15、两个Runner初始化器(ApplicationRunner接口和CommandLineRunner接口的实现类)

两个Runner初始化器 两个Runner初始化器——主要作用是对component组件来执行初始化 这里的Component组件我理解为是被Component注解修饰的类 Component //用这个注解修饰的类&#xff0c;意味着这个类是spring容器中的一个组件&#xff0c;springboot应用会自动加载该组件。 …