虚拟机学习环境基础(VMWare16+centos7+mysql8+docker+redis)-----无图版本

学习谷粒商城项目的笔记:
https://download.csdn.net/download/eee3331/86263542
应该是0积分吧?

修改虚拟机ip地址

1).找到IP地址的目录

cd /etc/sysconfig/network-scripts/
1

2).修改IP地址.

 vim ifcfg-ens33

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtRgefT7-1658932440304)(…/image/image-20220710143133832.png)]

BOOTPROTP="dhcp"是自动获取ip,应该改为static取用静态地址再加上以下这几行:

IPADDR=192.168.253.10
NETMASK=255.255.255.0
GATEWAY=192.168.253.1
DNS1=8.8.8.8

3). 重启网卡 检查IP地址是否正确

service network restart
image-20220710143606704

设置时间

date -s “20220710 15:35:50” &&hwclock --systohc

克隆虚拟机

image-20220710143905695

Linux下安装mysql

创建文件夹路径:

mysql目录下创建 **tmp(临时文件)data(数据)、logs(日志)、config(配置)**文件夹

mkdir tmp data logs config

image-20220710155945565

创建mysql用户和组,并修改文件权限

groupadd mysql

useradd -g mysql mysql

chown -R mysql:mysql /home/software/mysql

chmod -R 755 /home/software/mysql

创建配置文件

在新建的config文件夹下,一共建立两个

my.ini

mysql_custom.server

image-20220710160432990
my.ini
[client]
port=3306
socket=/home/software/mysql/tmp/mysql.sock
default-character-set=utf8mb4

[mysqld]
# 端口
port=3306
# 安装目录
basedir=/home/software/mysql/mysql-8.0.25-el7-x86_64
# 数据存放目录
datadir=/home/software/mysql/data
# 错误日志
log-error=/home/software/mysql/logs/error.log
# 为MySQL客户端和服务器之间的本地通讯指定一个套接字文件
socket=/home/software/mysql/tmp/mysql.sock
# 记录mysql运行的process id
pid-file=/home/software/mysql/tmp/mysql.pid

# 排序缓冲大小
sort_buffer_size=8M
# 联合查询缓冲大小
join_buffer_size=8M
# 服务端字符集
character-set-server=utf8mb4
# 创建新表时默认存储引擎
default-storage-engine=INNODB
# 允许最大连接数
max_connections=100
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# 只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve=1
# 设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
# 记录系统时区
log_timestamps=SYSTEM
# 限制LOAD DATA, SELECT …OUTFILE命令的路径
secure_file_priv='/tmp'

把mysql解压后的文件夹命名mysql,然后在support-files下找到mysql.server,拿到其中内容

image-20220710161920349

需要把基础路径从默认的user/local改成自己制定的文件路径,另外,这里data路径是在mysql解压文件的外面……

image-20220710162138528
mysql_custom.server

初始化及启动

切换到bin目录下:

cd /opt/software/mysql/mysql-8.0.25-el7-x86_64/bin

初始化,完成后会在logs/error.log日志文件里生成数据库初始密码

./mysqld --defaults-file=/home/software/mysql/config/my.cnf --initialize --user=mysql --basedir=/home/software/mysql/mysql --datadir=/home/software/mysql/data --lower-case-table-names=1

添加到系统服务自动启动(如果提示是否覆盖,输入 y 确认)

cp -a /home/software/mysql/config/mysql_custom.server /etc/init.d/mysqld

授权及添加服务

chmod +x /etc/init.d/mysqld
chkconfig --add mysqld

检查服务是否生效(如果3、4、5 项为 on 则表示已经生效)

chkconfig --list

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ujgFRoS7-1658932440307)(…/image/image-20220710164836354.png)]

添加全局变量
vi /etc/profile

export PATH=$PATH:/home/software/mysql/mysql/bin

# 退出保存,使环境变量生效
source /etc/profile
image-20220710162845502

MySQL启动报错:

Starting MySQL.2022-07-10T23:50:17.966266Z mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log’, however file don’t exists. Create writable for user ‘mysql’.
ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

最后发现,etc文件夹下也有一个my.cnf而这里面的配置正是报错的问题,干脆将内容换成我mysql下得my.cnf内容

image-20220710194454392 image-20220710194730144

然后启动成功!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EZd11xFo-1658932440308)(…/image/image-20220710194858675.png)]

启动MySQL服务

# 常用操作

service mysqld start

service mysqld stop

service mysqld restart

service mysqld status

# 查看MySQL服务信息

ps -ef | grep mysql

查看MySQL服务信息

ps -ef | grep mysql

初始密码会在数据库初始化后自动写入日志文件

# 查看日志文件

cat /opt/software/mysql/logs/error.log

# 登录

mysql mysql -uroot -p

修改mysql密码

修改密码

alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘123456’;

立即生效

flush privileges;

设置远程连接

use mysql;
update user set host=’%’ where user=‘root’;
flush privileges;

image-20220710195233234

远程连接数据库

数据库报错,10060,防火墙没关!

查看防火墙状态

firewall-cmd --state

永久关闭开启启动防火墙

systemctl disable firewalld.service

关闭防火墙

systemctl stop firewalld.service

image-20220710201442651 image-20220710201708191

Linux安装jdk

删除自带jdk

image-20220710203313301

java -version

rpm -qa | grep java

rpm -e --nodeps 要卸载的包(包通过rpm -qa | grep java获取))

修改环境变量

vi /etc/profile

在文件profile的最后一行加上,注意:JAVA_HOME=对应的是自己的jdk存放路径,编辑后保存并退出

export JAVA_HOME=/usr/local/jdk1.8.0_11
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b : {JRE_HOME}/lib: JREHOME/lib:CLASSPATH
export JAVA_PATH= J A V A H O M E / b i n : {JAVA_HOME}/bin: JAVAHOME/bin:{JRE_HOME}/bin
export PATH= P A T H : PATH: PATH:{JAVA_PATH}

image-20220710203724686

刷新配置文件

source /etc/profile

image-20220710204129126

提示java和javac权限不够,需要加权限:

chmod +x /home/software/java/jdk11/bin/java

java -version

chmod +x /home/software/java/jdk11/bin/javac

javac -version

OK!

安装docker

sudo yum update

更新系统的yum

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQed66Ol-1658932440310)(…/image/image-20220718204356787.png)]

整个过程很漫长,这次花了十分钟。

上docker官网查看安装教程

https://docs.docker.com/engine/install/centos/

具体操作参考官网,很详细。

首先卸载旧版docker

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

如果之前装过就会显示卸载进度,没装过自然显示没有可卸载的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNwivMp1-1658932440312)(…/image/image-20220718204705370.png)]

开始安装必要依赖

#yum的工具
sudo yum install -y yum-utils

//给出docker的下载地址
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jynTrrmy-1658932440314)(…/image/image-20220718204915293.png)]

下载安装docker

具体操作参考官网

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

所有提示输入y就行了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nuX314p-1658932440315)(…/image/image-20220718205139784.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9a5p6yWB-1658932440317)(…/image/image-20220718205342343.png)]

安装成功的模样 当然版本不一样也许会有不一样。

指定版本的安装方式

在安装成功的下方,官方提供了如何选择自己想要的版本的安装方式,可以先列出docker版本号,再根据对应版本号选择安装。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTNDLs5j-1658932440323)(…/image/image-20220718205555586.png)]

看不懂英文那就上翻译:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fH7eRI2P-1658932440327)(…/image/image-20220718205719411.png)]

就是这样。

yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin

具体操作参考官网

启动docker

sudo systemctl start docker

运行验证镜像

 sudo docker run hello-world

本地没有这个测试镜像它会自动去拉一个并运行:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bagUNZDC-1658932440328)(…/image/image-20220718210141440.png)]

显示docker当前版本

docker -v

查看docker当前下载的镜像

docker image

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XwzzgdNY-1658932440330)(…/image/image-20220718211000254.png)]

这里就显示了刚刚下载的 hello world 的测试镜像

设置docker开机自启动

systemctl enable docker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lDuwdCdx-1658932440332)(…/image/image-20220718211220919.png)]

配置阿里云镜像加速docker

要先登录阿里云注册申请一个 个人容器镜像仓库

sudo mkdir -p /etc/docker 

sudo tee /etc/docker/daemon.json <<-'EOF' {  "registry-mirrors": ["地址"] } EOF 

sudo systemctl daemon-reload 
sudo systemctl restart docker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3fbSD1eB-1658932440333)(…/image/image-20220718234850382.png)]

docker安装mysql

docker hub网站里直接搜索mysql进去

右侧就能看见这个命令,照着这个下载,默认是最新版mysql安装

tag下能选择指定版本:

docker pull mysql:版本号
image-20220718235517858 image-20220718235642518

查看docker镜像

sudo docker images
image-20220718235840673

docker运行mysql容器

首先需要关闭虚拟机本身的mysql服务,不然会提示3306端口被占用。

运行失败的话,需要先停止mysql容器、删除mysql容器、再重新创建运行。

docker常用命令:

https://blog.csdn.net/leilei1366615/article/details/106267225?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165816039316781818759161%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165816039316781818759161&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~hot_rank-2-106267225-null-null.185^v2^control&utm_term=docker%E5%81%9C%E6%AD%A2mysql&spm=1018.2226.3001.4450
docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart unless-stopped \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:latest
image-20220719001430980

启动后发现一个问题:

主机使用Navicat链接不上192.168.253.10,按理说应该被映射到了master的3306端口了。

使用

docker ps

port 一栏为空的!

image-20220719215723696

原因:

我们还没有配置mysql所需的文件:my.cnf

先转到 最开始创建容器时创建的文件夹下: /mydata/mysql/conf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
image-20220719230343433

然后重启容器:

image-20220719230514713

依旧不行!!!

原本是根据 尚硅谷谷粒商城项目的教程视频装的 ,最后同事介绍以上只适用5.7版本。

image-20220721225436026

三个路径都是宿主机中映射的文件路径,对应冒号后面容器内的路径。这个可以根据自己需要修改

MySQL8.0版本启动如下:

停止运行、删除容器

docker run
-p 3306:3306
–name mysql
-v /mydata/mysql/conf:/etc/mysql/conf.d
-v /mydata/mysql/logs:/logs
-v /mydata/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:latest

image-20220721230105170

进入容器

docker exec -it mysql bin/bash
image-20220721162545242

进入名为mysql的容器,相当于进入了一个名为mysql的虚拟机

然后用

mysql -uroot -p

登录mysql

exit退出mysql命令行

再次exit退出mysql容器回到宿主机

主机使用Navicat链接:

image-20220721223004983
docker update mysql --restart=always

设置docker中mysql开机自启动

image-20220726191934438

关闭centos7下的MySQL自启动:

由于要使用docker中的mysql,3306端口要交于容器映射,那么原宿主机的MySQL也没必要启动了。

image-20220721223406959

查看MySQL服务的自启动状态

systemctl list-unit-files | grep 'mysql'

关闭MySQL开机自启动服务

systemctl disable mysqld

开启MySQL服务自启动

systemctl enable mysqld

虚拟机开机后,docker中MySQL容器不会消失,只是停止了。

无需再用带有端口映射等的创建运行命令去启动MySQL,只需

docker start mysql
image-20220721223856951

docker安装Redis

image-20220721224210000

直接拉取最新版本的Redis

docker pull redis
image-20220721224349768

创建Redis配置文件
启动前需要先创建Redis外部挂载的配置文件 ( /docker/redis/conf/redis.conf )
之所以要先创建 , 是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 redis.conf 文件
服务器和容器都不存在 redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为目录创建

先创建配置文件:

## 创建目录
mkdir -p /mydata/redis/conf
## 创建文件
touch /mydata/redis/conf/redis.conf
docker run \
-p 6379:6379 \
--name redis \
--restart unless-stopped \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:latest redis-server /etc/redis/redis.conf \
image-20220721230931872

直接进入redis控制台:

docker exec -it redis redis-cli
image-20220721231400716

根据视频,restart重启容器数据会丢失,配置Redis持久化

conf文件夹下的redis.conf 里写上:

appendonly yes
image-20220721232444591

网上下一个 redis desktop management 直接输ip、端口链接:

image-20220721233309771

因为typora做的笔记截图都是保存在相对路径了,笔记太长了……
这篇,具体的就放到资源里下载看吧……
https://download.csdn.net/download/eee3331/86263542

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上岸撒尿的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值