Docker 安装 Mysql 和 Redis
Docker 安装
请观看之前的博客内容 Docker 安装教程
应用安装
安装 Mysql
安装 mysql 5.7 版本
- 拉取镜像
$ docker pull mysql:5.7
- 新建需要
挂载
文件夹
$ mkdir /docker-data/mysql/data
$ mkdir /docker-data/mysql/conf.d
- 在
conf.d
目录创建 my.cnf
$ vi my.cnf
[mysqld]
skip-grant-tables
# skip-grant-tables作为启动参数的作用:MYSQL服务器不加载权限判断,任何用户都能访问数据库。
default-time_zone = '+8:00'
# 设置北京时区
- 运行并挂载在本机
$ docker run --name mysql5.7 -p 3306:3306 \
--restart=always --privileged=true \
-v /docker-data/mysql/data:/var/lib/mysql \
-v /docker-data/mysql/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 修改密码为空
$ docker exec -it CONTAINER ID bash
$ mysql -uroot -p
# 不用输密码直接回车,进入mysql命令
mysql> use mysql
mysql> select user,authentication_string,host from user; # 查看账号、密码、可连接的host
mysql> update user set authentication_string='' where user='root'; #修改密码
mysql> flush privileges; #刷新权限
> mysql> select user,authentication_string,host from user; # 查看账号、密码、可连接的host
> root需要有两个host -- localhost、% 并且密码不为空,没有 % 的话无法外网访问
> mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456'; # 没有的话进行新建
- 注释掉
my.cnf
中,文件中的skip-grant-tables
,重启mysql
服务
$ docker ps
$ docker stop CONTAINER ID
$ docker start CONTAINER ID
- 修改 root 密码
mysql> use mysql
mysql> alter user 'root'@'localhost' IDENTIFIED BY '123456';
mysql> alter user 'root'@'%' IDENTIFIED BY '123456';
mysql> flush privileges;
安装 mysql 8 版本
步骤与mysql 5.7的流程相似
- 拉取镜像
$ docker pull mysql:latest
- 新建需要
挂载
文件夹
$ mkdir /docker-data/mysql8/data
$ mkdir /docker-data/mysql8/conf.d
- 在
conf.d
目录创建 my.cnf
$ vi my.cnf
[mysqld]
skip-grant-tables
default-time_zone = '+8:00'
- 运行并挂载在本机
$ docker run --name mysql8 -p 3306:3306 \
-v /docker-data/mysql8/data:/var/lib/mysql \
-v /docker-data/mysql8/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
- 修改密码为空
$ docker exec -it CONTAINER ID bash
$ mysql -uroot -p
# 不用输密码直接回车,进入mysql命令
mysql> use mysql
mysql> select user,authentication_string,host from user; # 查看账号、密码、可连接的host
mysql> update user set authentication_string='' where user='root'; #修改密码
mysql> flush privileges; #刷新权限
- 注释掉
my.cnf
中,文件中的skip-grant-tables
,重启mysql
服务
$ docker ps
$ docker stop CONTAINER ID
$ docker start CONTAINER ID
> MYSQL 8.0内新增加`mysql_native_password`函数,通过更改这个函数密码来进行`远程连接`。
> mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
> 没有 `root - %` 添加即可。
> mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
- 修改 root 密码
mysql> use mysql
mysql> alter user 'root'@'localhost' IDENTIFIED BY '123456';
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> flush privileges;
安装 redis
- 拉取官方的 redis 镜像指定版本
$ docker pull redis:5.0.5
- 修改启动默认配置,官方 redis.conf 配置文件
注意需要修改四个地方:
bind 127.0.0.1 #注释掉这部分,用来限制redis只能本地访问
protected-mode no #默认yes表示开启保护模式,用来限制redis只能本地访问
appendonly yes #持久化
requirepass password #密码
- 新建文件夹用于
redis
外部挂载
$ mkdir /docker-data/redis/data
$ mkdir /docker-data/redis/conf
- 启动 redis
$ docker run --name my-redis -d -p 6379:6379 \
--restart=always --privileged=true \
-v /docker-data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /docker-data/redis/data:/data \
redis:5.0.5 redis-server /etc/redis/redis.conf
- 查看 redis 是否正常启动,如果没有问题就可以使用
远程
连接 redis
$ docker ps