Linux服务器安装Docker版redis/mysql

安装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;
 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值