LINUX从零开始——SERVICES(系统&服务管理进阶)——Day6 [rsync同步操作、inotify实时同步、数据库服务基础、管理表数据]

一、环境准备
1.还原快照,开启虚拟机A与虚拟机B,以root用户登录

二、环境的设置

1.防火墙设置
虚拟机A
[root@A ~]# firewall-cmd --set-default-zone=trusted
虚拟机B
[root@B ~]# firewall-cmd --set-default-zone=trusted
2.SELinux设置
虚拟机A
[root@A ~]# getenforce
Enforcing
[root@A ~]# setenforce 0
[root@A ~]# getenforce
Permissive
[root@A ~]# vim /etc/selinux/config
SELINUX=permissive

虚拟机B操作同上

######################################################################################################################################
三、数据同步

rsync同步操作
•命令用法
–rsync [选项…] 源目录 目标目录
•同步与复制的差异
–复制:完全拷贝源到目标
–同步:增量拷贝,只传输变化过的数据

•rsync操作选项
–-n:测试同步过程,不做实际修改
––delete:删除目标文件夹内多余的文档
–-a:归档模式,相当于-rlptgoD
–-v:显示详细操作信息
–-z:传输过程中启用压缩/解压

虚拟机A:
[root@A ~]# mkdir /mydir
[root@A ~]# mkdir /todir
[root@A ~]# cp /etc/passwd /etc/shadow /etc/hosts /etc/fstab /mydir/
[root@A ~]# ls /mydir/

[root@A ~]# ls /todir/
[root@A ~]# rsync -av /mydir /todir/ #源目录没有/结尾,同步目录本身
[root@A ~]# ls /todir/

[root@A ~]# rm -rf /todir/*
[root@A ~]# rsync -av /mydir/ /todir/ #源目录有/结尾,同步目录内容
[root@A ~]# ls /todir/

[root@A ~]# touch /mydir/1.txt
[root@A ~]# ls /mydir/
[root@A ~]# rsync -av /mydir/ /todir/
[root@A ~]# ls /todir/

[root@A ~]# echo hahaxixi > /mydir/1.txt
[root@A ~]# cat /todir/1.txt
[root@A ~]# rsync -av /mydir/ /todir/
[root@A ~]# cat /todir/1.txt

[root@A ~]# ls /mydir/
[root@A ~]# ls /todir/

[root@A ~]# touch /todir/a.txt
[root@A ~]# mkdir /todir/abc
[root@A ~]# ls /mydir/
[root@A ~]# ls /todir/

[root@A ~]# rsync -av /mydir/ /todir/
[root@A ~]# ls /todir/
[root@A ~]# ls /mydir/

[root@A ~]# rsync -av --delete /mydir/ /todir/
[root@A ~]# ls /mydir/
[root@A ~]# ls /todir/

######################################################################################################################################
四、远程数据同步

虚拟机A的/mydir目录与虚拟机B的/opt目录,实现数据同步

–下行:rsync […] user@host:远程目录 本地目录
–上行:rsync […] 本地目录 user@host:远程目录

虚拟机A:
[root@A ~]# ls /mydir
[root@A ~]# rsync -av --delete /mydir/ [email protected]:/opt/

虚拟机B
[root@B ~]# ls /opt

######################################################################################################################################
五、实时数据同步

1.ssh实现无密码的验证
[root@A ~]# ssh-keygen #一路回车,生成公钥与私钥
[root@A ~]# ls /root/.ssh/
id_rsa(私钥) id_rsa.pub(公钥) known_hosts(记录曾经远程管理过的机器)
[root@A ~]# ssh-copy-id [email protected] #传递公钥到虚拟机B

[root@A ~]# rsync -av --delete /mydir/ [email protected]:/opt/

2.监控目录内容变化的程序
安装inotify-tools工具,产生程序inotifywait
首先具备源码包:tools.tar.gz传递到虚拟机A
软件素材百度云盘:
链接:https://pan.baidu.com/s/1hmepKHxMG_vPnBwWlwAlTA
提取码:k6xs

[root@A ~]# yum -y install lrzsz #实现Windows数据到linux的软件
[root@A ~]# rz #传递Windows数据到linux

安装gcc与make,开发工具,用于将源码变成可以执行的程序 课间休息: 11:15 上课
[root@A ~]# yum -y install gcc make
[root@A ~]# rpm -q gcc make
gcc-4.8.5-28.el7.x86_64
make-3.82-23.el7.x86_64
[root@A ~]#

进行tar解包
[root@A ~]# tar -xf /root/tools.tar.gz -C /
[root@A ~]# ls /
[root@A ~]# ls /tools/

[root@A ~]# tar -xf /tools/inotify-tools-3.13.tar.gz -C /tmp/
[root@A ~]# ls /tmp/

[root@A ~]# cd /tmp/inotify-tools-3.13/
[root@A inotify-tools-3.13]# ls

运行configure脚本,作用1:检测系统是否安装gcc与make工具 作用2:指定软件安装位置及功能
[root@A ~]# cd /tmp/inotify-tools-3.13/
[root@A inotify-tools-3.13]# ./configure

编译,生成可以运行的执行程序
[root@A ~]# cd /tmp/inotify-tools-3.13/
[root@A inotify-tools-3.13]# make

安装,运行安装
[root@A ~]# cd /tmp/inotify-tools-3.13/
[root@A inotify-tools-3.13]# make install
[root@A inotify-tools-3.13]# ls /usr/local/bin/inotifywait
/usr/local/bin/inotifywait

•基本用法
–inotifywait [选项] 目标文件夹
•常用命令选项
–-m,持续监控(捕获一个事件后不退出)
–-r,递归监控、包括子目录及文件
–-q,减少屏幕输出信息
–-e,指定监视的 modify、move、create、delete、attrib 等事件类别

[root@A ~]# rsync -av --delete /mydir/ [email protected]:/opt/

书写同步的脚本程序:
循环:解决重复性的事情

 while循环:实现不定次数的循环

 格式:
          while   命令
           do  
            重复执行的事件
           done

[root@A ~]# ls /usr/local/bin/inotifywait
[root@A ~]# vim /etc/rsync.sh
while inotifywait -rqq /mydir #-r:递归监控 -qq:不要删除信息
do
rsync -a --delete /mydir/ [email protected]:/opt/
done
[root@A ~]# chmod a+x /etc/rsync.sh #为所有人添加执行权限
[root@A ~]# /etc/rsync.sh & #放入后台运行
[root@A ~]# jobs #查看后台进程

[root@A ~]# jobs -l
[1]+ 108505 运行中 /etc/rsync.sh &
[root@A ~]# kill 108505 #杀死脚本进程
[root@A ~]# jobs -l
[1]+ 108505 已终止 /etc/rsync.sh

######################################################################################################################################
六、数据库服务基础

什么是数据库:存放数据的仓库

数据库系统(数据库软件)
LINUX从零开始——SERVICES(系统&服务管理进阶)——Day6 [rsync同步操作、inotify实时同步、数据库服务基础、管理表数据]_第1张图片
在数据库系统中,有很多的数据库,在每一个数据库中有很多的表格,在每一个表格中有很多的记录

•常见的关系型 数据库管理系统
–微软的 SQL Server
–IBM的 DB2
–甲骨文的 Oracle、MySQL
–社区开源版 MariaDB

•RHEL7 中的 MariaDB 相关包
–mariadb-server:提供服务端有关的系统程序

虚拟机A:
[root@A ~]# yum -y install mariadb-server
[root@A ~]# rpm -q mariadb-server
mariadb-server-5.5.56-2.el7.x86_64
[root@A ~]# systemctl restart mariadb

进入数据库系统中:全新的开始,所有数据库的指令,都必须以;结尾
[root@A ~]# systemctl restart mariadb
[root@A ~]# mysql
MariaDB [(none)]> show databases; #查看有哪些数据库
MariaDB [(none)]> create database nsd2002; #创建数据库nsd2002

MariaDB [(none)]> show databases;

MariaDB [(none)]> drop database nsd2002; #删除数据库nsd2002
MariaDB [(none)]> show databases;

MariaDB [(none)]> create database nsd; #创建数据库nsd
MariaDB [(none)]> show databases;
MariaDB [(none)]> exit #退出数据库系统
Bye
[root@A ~]# mysql
MariaDB [(none)]> show databases; #查看有哪些数据库
MariaDB [(none)]> use mysql; #切换到mysql数据库中
MariaDB [mysql]> show tables; #查看当前数据库中有哪些表格

MariaDB [mysql]> use nsd;
Database changed
MariaDB [nsd]> use test;
Database changed
MariaDB [test]> show databases;
MariaDB [test]> exit #退出数据库系统
Bye
[root@A ~]#

软件素材百度云盘:下载第一阶段数据库备份文件:users.sql
链接:https://pan.baidu.com/s/1hmepKHxMG_vPnBwWlwAlTA
提取码:k6xs
LINUX从零开始——SERVICES(系统&服务管理进阶)——Day6 [rsync同步操作、inotify实时同步、数据库服务基础、管理表数据]_第2张图片

为数据库系统,管理员(root)设置密码
数据库系统管理员,针对数据库系统管理具有最高权限,用户信息存放mysql库user表
Linux系统的管理员,针对Linux系统管理具有最高权限,用户信息存放/etc/passwd

•为数据库账号修改密码
–mysqladmin [-u用户名] [-p[旧密码]] password ‘新密码’

[root@A ~]# mysqladmin -u root password ‘123’ #在linux系统命令行为数据库系统管理员root设置密码123
[root@A ~]# mysql -u root -p
Enter password:
MariaDB [(none)]> exit
Bye
[root@A ~]# mysql -u root -p123

恢复数据库密码的,不正当操作,极度危险(了解)
[root@A ~]# rm -rf /var/lib/mysql/
[root@A ~]# yum -y reinstall mariadb-server
[root@A ~]# systemctl restart mariadb

[root@A ~]# mysqladmin -u root password ‘123’
[root@A ~]# mysql -u root -p123
######################################################################################################################################################
表格的操作:增(insert) 删 (delete) 改(update) 查(select)
表记录、表字段
编号 姓名 地址 联系方式
1 dc 东村 123456
2 rh 西村 654321

•导入/恢复到数据库
–mysql [-u用户名] [-p[密码]] 数据库名 < 备份文件.sql

1.将真机的users.sql传递到虚拟机A
[root@A ~]# ls /root/
2.恢复数据
[root@A ~]# mysql -u root -p123 nsd < /root/users.sql #恢复数据到数据库nsd中
[root@A ~]# mysql -u root -p123
MariaDB [(none)]> use nsd; # 切换到nsd数据库中
MariaDB [nsd]> show tables; #查看有哪些表格
±--------------+
| Tables_in_nsd |
±--------------+
| base |
| location |
±--------------+
2 rows in set (0.00 sec)
MariaDB [nsd]>

查(select)格式:select 表字段 from 数据库名.表名;
[root@A ~]# mysql -u root -p123
MariaDB [(none)]> use nsd; # 切换到nsd数据库中
MariaDB [nsd]> show tables; #查看有哪些表格
MariaDB [nsd]> select * from base; #查询base表中所有表字段的所有内容
MariaDB [nsd]> select name from base; #查询base表,显示name表字段内容
MariaDB [nsd]> select name,password from base; #查询base表,显示name与password表字段内容

MariaDB [nsd]> use mysql; #切换到mysql数据库中
MariaDB [mysql]> select * from nsd.base; #查看nsd数据库中base表内容
MariaDB [mysql]> use nsd;
MariaDB [nsd]> select * from base where password=‘456’; #查询base表 ,password表字段值为456的记录
MariaDB [nsd]> select * from base where id=‘4’;

密码是 solicitous 的人的名字?
MariaDB [nsd]> select * from base where password=‘solicitous’;
MariaDB [nsd]> select * from base where id=‘1’ or id=‘3’; #多个条件或者,多个条件满足其一
MariaDB [nsd]> select * from base where password=‘solicitous’ and id=‘3’; #多个条件且,多个条件都满足

补充命令desc:查看表结构的命令,帮助查看大表格
MariaDB [nsd]> desc base;
MariaDB [nsd]> use mysql;

MariaDB [mysql]> desc user; #查看user表结构
MariaDB [mysql]> select user,host,password from user;

MariaDB [mysql]> select user,host,password from user where password=’’; #查询密码为空的记录
MariaDB [mysql]> delete from user where password=’’; #删除user表中,密码为空的记录
MariaDB [mysql]> select user,host,password from user;
MariaDB [(none)]> flush privileges; #专用于刷新user表记录
MariaDB [(none)]> exit
[root@A ~]# echo ‘192.168.4.7 a.tedu.cn’ >> /etc/hosts #书写解析记录
[root@A ~]# mysql -u root -ha.tedu.cn #登录失败

了解内容:数据库的授权
进入数据库系统命令格式:
grant 权限(select、insert、delete、update、all) on 数据库名.表名 to 用户名@登录方式 identified by ‘密码’;
[root@A ~]# mysql -u root -p123
MariaDB [(none)]> grant select on nsd.* to lisi@localhost identified by ‘123’;

当lisi用户从localhost本地登录输入密码123,将会获得nsd数据库所有表的查询权限

MariaDB [mysql]> select user,host,password from user;
MariaDB [mysql]> exit

[root@A ~]# mysql -u lisi -p123
MariaDB [(none)]> show databases;
MariaDB [(none)]> use nsd;
MariaDB [nsd]> select * from base;
MariaDB [nsd]> exit
##################################################

你可能感兴趣的:(LINUX从零开始——SERVICES(系统&服务管理进阶)——Day6 [rsync同步操作、inotify实时同步、数据库服务基础、管理表数据])