安装Redis
1,
docker search redis
如下图
2,下载官方版本
docker pull redis
3,启动镜像
docker run -p 6379:6379 -v $PWD/data:/data -d redis:latest redis-server --appendonly yes
命令说明:
-p 6379:6379 :将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data :将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置
4,查看容器 docker ps -a 如下图
如果没有正常启动,输入docker logs 容器ID 查看日志,若提示无权限,可以在启动命令中添加--privileged=true,如:
docker run -p 6379:6379 --privileged=true -v $PWD/data:/data -d redis:latest redis-server --appendonly yes
5,查看容器启动日志
docker logs b3b297dc1fc3
6,访问redis
docker exec -it b3b297dc1fc3 /bin/bash
然后输入 redis-cli
安装MySQL
1,docker search mysql 如下图:
找到官方版本
2,docker pull docker.io/mysql 拉取镜像,如下图:
3,创建配置文件映射目录
touch /data/mysql/my.cnf #配置文件
mkdir /data/mysql/data #数据存储
#配置文件中输入以下内容:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
4,启动:
docker run -d -p 3306:3306 -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=lw@123 --name mysql docker.io/mysql
5,docker ps -a 查看容器,如下图:
以上是安装MySQL官方版本的docker镜像,是最新的,已经到了8.0
以前安装的旧版本如5.7的数据库使用这个版本可能会出错,
如链接错误,提示caching_sha2_password could not be loaded
解决方法:
进入到容器:docker exec -it 容器ID /bin/bash
进入到MySQL:mysql -uroot -p123456
修改密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
重新链接就可以了
但是我自己的项目运行的时候提示create connection error jdbc://localhost:3306...
感觉像是连不上数据库,但是报错又是报biginteger无法转换为long,弄半天没弄好
还是用了阿里5.7的MySQL镜像,项目正常运行
阿里的MySQL镜像
docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7
如下图:
然后再按照上面的命令run起来就可以了
注意:这里会有个时间对不上的问题,就是容器与宿主机的时间对不上,可能会导致一些项目出问题
这里使用共享宿主机的时间来修改这个问题:
添加-v参数 -
v
/etc/localtime
:
/etc/localtime
:ro,
修改后的启动命令:
docker run -d -p 3306:3306 -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=lw@123 --name mysql registry.cn-hangzhou.aliyuncs.com/acs-sample/mysql:5.7
Mysql only_full_group_by解决:
1,通过MySQL视图工具输入以下命令
备注:该方法只能临时起作用,如果服务被重启则失效
set GLOBAL sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ';
2,通过配置文件永久更改
先查看安装的MySQL里面的sql_mode配置
输入:docker exec -it 容器ID /bin/bash
输入:mysql -uroot -p 登录MySQL
输入:select @@global.sql_mode;
结果如下:
然后退出,修改配置文件
输入:vi my.cnf
如果没有把配置文件映射出来,而容器内没有装任何的文件编辑器,则退出容器,执行docker exec -it 容器ID bash
进入容器后执行apt-get update,apt-get install vim安装文件编辑器
在[mysqld]下面输入
sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION '
如下所示:
然后重启MySQL
docker restart MySQL容器ID
按照上面的方法再次查询sql_mode的配置,得到如下结果
发现MySQL的sql_mode已经改到了,说明MySQL的配置文件映射是成功的
再附上不使用docker安装MySQL的流程:
1. 首先进入本机的源文件目录
cd /usr/local/src
2. 使用wget下载官方yum源的rpm包:
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
3. 安装rpm包:
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
4. 再次使用yum来安装mysql-server:
yum install -y mysql-server
可以看到这次不再提示安装Mariadb了
5. 安装完成后,启动mysqld服务:
systemctl start mysqld
查看是否成功启动:
ps aux|grep mysqld
6. 设置mysqld服务开机自启动:
systemctl enable mysqld
7. 使用初始密码登录
由于MySQL从5.7开始不允许首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在/var/log/mysqld.log文件中,使用下面的命令可以查看此密码:
cat /var/log/mysqld.log|grep 'A temporary password'
2017-11-12T13:35:37.013617Z 1 [Note] A temporary password is generated for root@localhost: bkv,dy,)o7Ss
最后一行冒号后面的部分bkv,dy,)o7Ss
就是初始密码。
使用此密码登录MySQL:
mysql -u root -p
8. 更改默认密码:
切换数据库:
use mysql;
修改root
密码:
alter user 'root'@'localhost' identified by 'your_password';
将your_password
替换成你自己的密码就可以了,当然,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度应该在6位以上。
如果不想要这个强密码校验,修改2个参数即可:
set global validate_password_policy=0;
set global validate_password_length=1;