备忘录:用Docker安装Mysql和Redis并进行外部连接

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 最近强哥在学习一个开源项目,由于想要在本地部署项目以便更好的进行项目预研,所以需要在本地搭建项目环境。

哈喽,大家好,我是强哥。


最近强哥在学习一个开源项目,由于想要在本地部署项目以便更好的进行项目预研,所以需要在本地搭建项目环境。


项目中有用到MySQL和Redis,可是如果在本地直接安这两个软件强哥又觉得很不舒服,机子上有各种各样的开发软件以后也不好维护。恰巧,自己机子上安装了Docker,那为什么不直接把MySQL和Redis安到Docker上呢?


说干就干,这篇文章只是简单的记录下Docker安装MySQL和Redis的步骤方法,可以说是个备忘录吧。毕竟搭建环境还是可能时不时要用到的,自己实践好的拿来就用,比较省时间。


安装Mysql


1、查找镜像


docker search mysql


20.png


2、下载镜像


选择自己想要的版本,然后下载镜像


docker pull centos/mysql-57-centos7


21.png


3、通过镜像创建容器并运行:


# 启动容器,端口映射到3308,挂载之前的数据卷
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 f83a2938370c


命令解释:


  • f83a2938370c为Image ID
  • -d 是说让我们的容器在后台运行
  • -e 给新创建的数据库设置root密码
  • -p 3306:3306 把所有对宿主机3306端口的tcp报文转发到容器的3306端口


4、配置外部连接


容器运行起来后,Mysql还不能直接连,需要配置权限、密码相关信息。


//进入容器:
docker exec -it 62349aa31687 /bin/bash
//进入mysql:
mysql -uroot -p123456
//使用mysql库
mysql> use mysql;
//更新域属性,'%'表示允许外部访问:
mysql> update user set host='%' where user ='root';
//刷新权限:
mysql> flush privileges;
//授权用户,你想root使用密码从任何主机连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY 'admin123'  WITH GRANT OPTION;
mysql> flush privileges;
//如果你想允许用户root从ip为192.168.1.104的主机连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.104'  IDENTIFIED BY 'admin123'  WITH GRANT OPTION; 
mysql> flush privileges;


配置完上面的信息之后,就可以直接在外部连接到Docker中的Mysql容器了


22.png


这里要说明一点,如果使用的是Dbeaver连接的MySQL8的话,如果直接连还会报错:Public Key Retrieval is not allowed


23.png


这时,只需要在Dbeaver中,连接设置->驱动属性中的allowPublicKeyRetrieval设置成true


24.png


之后就能正常连接了:


25.png


5、Linux和Windows的区别


对了,强哥在安完Mysql并成功连接后,在使用项目的初始化脚本时,还遇到一个坑,就是项目的sql脚本使用的是小写的表名。会使得项目在初始化的时候报错:提示表不存在问题:Table 'xxx.QRTZ_LOCKS' doesn't exist。


这时候就要确认mysql数据库是否区分大小写。方法:使用show Variables like '%table_names'查看lower_case_table_names的值,0代表区分,1代表不区


LINUX下的MYSQL默认是要区分表名大小写的 ,而在Windows下表名不区分大小写


所以,如果是Docker安装Mysql的话,肯定就是区分大小写了,让MYSQL不区分表名大小写的方法其实很简单:


  1. 修改/etc/my.cnf
  2. 在[mysqld]下加入一行:lower_case_table_names=1
  3. 重新容器即可


安装Redis


其实有了上面安装Mysql的经验,按差不多的顺序安装Redis就可以了。


1、查找镜像


docker search redis


26.png


2、下载镜像


选择自己想要的版本,然后下载镜像


docker pull redis


3、运行Redis容器


docker run --name redis -d -p 6379:6379 5d44f444e409


  • 5d44f444e409为Image ID


4、外部连接


Redis相对没有Mysql这么麻烦,还要配权限什么的。Redis容器启动后,直接外部就可以连啦:


27.png


当然,./redis-cli这个也是要本地有redis的包才行,可以用Redis-manager测试连接或者写一段代码测试连接效果一样哈。


写在最后


其实,这篇文章内容相对来说,没有太多的技术含量,不过是一篇备忘录而已。当然,对于强哥这种有点健忘症的人来说,记录收藏一下,还是挺有用的。有时候往往是最简单的东西,最容易浪费时间和出错。尤其是你浪费了一大把时间在与目标无关紧要的东西上时,非常容易让人恼火。强哥记录这篇也是有切身经历的。


整个用Docker安装软件的流程就大体这样,比如之后还要用到其他的一些软件之类的,其实有Docker真的能方便很多。安装流程也大体如此,比较简单。安装一次Docker之后,便一劳永逸啦,比在本机安装真的会方便不少。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4天前
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
|
13天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
29 4
|
19天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
56 3
|
20天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
36 2
|
21天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
22天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
65 2
|
22天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
59 2
|
24天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
56 2
|
8天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
66 0
|
12天前
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
下一篇
无影云桌面