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

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

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


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


项目中有用到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之后,便一劳永逸啦,比在本机安装真的会方便不少。

相关文章
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
2717 4
MySQL源码编译安装
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
2084 4
MySQL二进制包安装
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
1123 6
|
Ubuntu 网络安全 数据安全/隐私保护
百度搜索:蓝易云【docker通过dockerfile安装sftp教程。】
现在,你已经通过 Dockerfile 成功安装了 SFTP,并且可以使用指定的用户名和公钥进行远程访问。请确保替换示例中的用户名、密码和公钥为自己的实际值。
520 1
|
消息中间件 Shell RocketMQ
百度搜索:蓝易云 ,常用环境部署—Docker安装RocketMQ教程!
通过按照上述步骤,您可以在Docker中成功安装和部署RocketMQ。请注意,上述命令仅提供了一个基本的安装和配置过程,具体配置和使用可以根据您的需求进行进一步调整。确保在执行命令之前,您已经安装并配置好Docker环境。
583 0
|
缓存 Linux Docker
【最新版正确姿势】Docker安装教程(简单几步即可完成)
之前的老版本Docker安装教程已经发生了变化,本文分享了Docker最新版安装教程,其他操作系统版本也可以参考官 方的其他安装版本文档。
12742 3
【最新版正确姿势】Docker安装教程(简单几步即可完成)
|
数据可视化 数据挖掘 Docker
Docker Desktop 安装 ClickHouse 超级简单教程
Docker Desktop 安装 ClickHouse 超级简单教程
1446 1
|
Linux 测试技术 Docker
Docker CE for CentOS 安装教程
Docker CE for CentOS 安装教程
928 1
|
关系型数据库 MySQL Linux
Docker安装mysql详细教程, mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘(报错已解决)
Docker安装mysql详细教程, mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory) 已解决