linux网络及服务配置基础

  • linux网络及服务配置基础已关闭评论
  • 31 次浏览
  • A+
所属分类:linux技术
摘要

配置IP地址
查看IP地址:ifconfig
进入:vim /etc/sysconfig/network-script/ifcfg-网卡名
ONBOOT=yes
BOOTPROTO=yes
在最后增添:IPADDR=IP地址
NETMASK=子网掩码

配置IP地址
查看IP地址:ifconfig
进入:vim /etc/sysconfig/network-script/ifcfg-网卡名
ONBOOT=yes
BOOTPROTO=yes
在最后增添:IPADDR=IP地址
NETMASK=子网掩码

	ifup  网卡名(重启网卡) 	ping IP地址  即可  	iptables -L 查看防火墙 	iptables -F 关闭防火墙 

网络配置基础
一、网络配置
1、主机名
查看:hostname
临时修改:hostname FQDN(完全合格域名)
永久修改:/vim/etc/sysconfig/network
NETWORKING 启动IPv4的主机名设置
HOSTNAME 更改主机名

	默认主机名:localhost.localdomain 	NetBIOS协议:网络基本输入/输出系统 2、网卡  	查看:ifconfig 	临时修改:ifconfig ech1   172.16.1.100 netmask 255.255.255.0  	ONBOOT=no			网卡是否启动 	NM_CONTROLLED=yes		网卡守护进程	(service NetworkManager stop) 	BOOTPROTO=static			网络参数获取方式	(static手动配置dhcp自动获取方式) 	IPADDR=172.16.1.2			IP地址 	NETMASK=255.255.0.0		子网掩码 重启网卡:service network restart       禁止:ifdown eth0(网卡名)       启用:ifup eth0(网卡名) 3、网关和路由 	查看:route -n  	临时修改: 		route add default gw 192.168.3.1	添加网关 		route add -net 192.168.2.0/24 gw 192.168.3.1  添加路由 	 		route del default gw 192.168.3.1	删除网关 		route del -net 192.168.2.0/24		删除路由 		 	永久修改: 		进入:vim /etc/sysconfig/network-scripts/ifcfg-eth1 		添加:GATEWAY=网关 4、DNS服务:将域名转换成IP地址 		进入:vim /etc/sysconfig/network-scripts/ifcfg-eth1 		添加:DNS1= 		          DNS2= 		查看:nslookup 5、本地解析文件(主机映射) 	修改:vim /etc/hosts 		IP      域名    	    192.168.1.3    www.yyy.con 	(回环:检测自己的网卡是否能运行) 	   及时生效,无需重启 	hosts和DNS的区别 		系统优化使用/etc/hosts文件中内容解析域名 		/etc/hosts文件仅对本主机生效 		     6、测试命令 	ping	用来测试两台主机之间的连通性 		-c	指定ping的次数 		-i	指定ping的时间间隔 		w	指定等待时间 	nestat	列出软件详细信息列表 		-a	显示ping的次数 		-n	数字形式显示地址 		-p	显示PID 		-t	显示TCP相关端口信息 		-u	显示UDP相关端口信息 		-l	显示详细列表信息 	traceroute	(追踪命令) 格式:traceroute  目标主机 		测试从当前主机到目的主机之间经过的网络节点 		追踪到目标网络经过多少设备 	arp(地址解析协议) 		将IP地址解析为MAC地址 	nmape	 

二、远程管理
1、概述
SSH协议:为客户机提供安全的shell
服务名:sshed
端口号:22
配置文件:
服务器端/etc/ssh/sshd_config
作用:提供安全加密的与远程连接
2、配置项
listenaddress 监听地址
permitrootlogin 是否允许root用户远程登陆
permitemptypasswords 是否允许空密码登录
maxauthtries 最大登录次数
logingracetime 登录冻结时间
身份验证方式:
PasswordAuthtication 用户名/密码验证,默认方式
PubkeyAuthentication yes 密钥对
AuthorizedKeysFile .ssh/authorized_keys 密钥库
3、功能模块
ssh 用户名 @IP地址 远程安全登录
scp 文件名 用户名 @IP地址:目的地(目录) 远程安全复制文件

	ssh -p 端口号  用户名@IP地址 	scp 安全文件复制 			下载: 				scp -P 端口号 用户名@IP地址:/目录  /本地文件 			上传: 				scp -P 端口号 本地文件 用户名@服务器地址:/服务器目录 	sftp	安全的FTP传输 		sftp  --oPrt=端口号 用户名@服务地址 		上传:put 		下载:get 4、密钥对验证 	1、在客户端生成密钥对,公钥和私钥		 	2、把公钥文件上传给服务器 	3、在服务器端将公钥文件导入到密钥库里 	4、测试  	步骤: 		1、在客户机和用户机各创建一个用户,设置密码,并都切换至用户 		2、在客户机上用ssh-keygen -t rsa命令生成密钥对 		3、将公钥(id_rsa.pub) 用scp id_rsa.pub 用户名@服务器地址:/服务器目录   命令上传到用户机 		4、到用户机上创建用户家目录 	 		5、进入vim /etc/ssh/sshd_config      更改:PasswordAuthtication	用户名/密码验证,默认方式 						 PubkeyAuthentication yes	密钥对 		6、将公钥文件导入刚刚创建的目录中			 		7、到从服务器向主服务器,远程登陆检测 

一、DHCP服务
1、DHCP 动态主机控制协议
2、DHCP的作用: 分配网络参数,提供集中管理
提高地址利用率,解决IP地址不够用的问题
减少管理和维护成本
3、DHCP的优势:
小型网络,可以使用路由器/交换机;中大型网络,使用服务器
路由器/交换器的DHCP功能是附加功能,若因流量大,导致路由器/交换器功能失效,则得不偿失
服务器配置更加简单、高效
服务器迁移有优势
4、DHCP的原理
①、客户端寻找服务器
客户端广播发送DHCPdiscover包(群播),寻找DHCP服务器
客户端数据包的源地址为0.0.0.0,目标地址为255.255.255.0(MAC地址)
客户端等待一秒无响应,发送第二次,9秒无响应,发送第三次,13,16
②、服务器提供地址信息
监听到客户端的包,用MAC地址,回应客户端DHCPoffer包(回应,单播)
offer提供IP地址、租约信息等简单参数
③、接受并广播
客户端接受最先到达的offer包
客户端向网络发送request包(广播自己已有地址,请求所有网络参数)
request告知网络中所有服务器,该客户端接收了那个offer

		发送检测包,检测该IP地址是否有人使用,若占用,则拒绝该offer,重新discover 	④、服务器确认 		接受客户端的request包后,向客户机发送DHCPack包,包含所有的网络参数 	⑤、客户端重新登录 		不需要SDHCPdiscover,直接发送DHCPrequest,请求之前的参数 	⑥、服务器确认 		可以使用,则分配DHCPask包确认网络参数 		不可使用,则分配DHCPnack拒绝客户端,客户端重新发送DHCPdiscover 	⑦、更新租约 		客户端在租约一半时,向服务器发送DHCPrequest包,请求更新租约 		 		客户机在到一半时(75%)发送DHCPrequest包,请求更新 

二、配置
1、基本配置
软件:dhcp
端口:UDP67 接受下级客户端的分配请求
UDP68 向客户端发送请求成功或失败的结果
服务名:
dhcpd DHCP的主程序
dhcprelay DHCP中继服务
配置文件:
/etc/dhcp/dhcpd.conf 主配置文件
/etc/sysconfig/dhcrelay 中继配置文件
/usr/share/doc/shcp-4.1.1/dhcpd.conf.sample 主配置文件模板
2、配置项
subnet 网段声明
host 主机声明

中继配置 	跨网段分配IP地址 

一、DNS
1、概念
DNS 域名系统
2、作用
域名解析
3、解析方式
正向解析:
域名解析成IP地址
反向解析:
IP地址解析成域名
4、域名
baidu.con 域名
www.baidu.com FQDN

5、组织 	IANA 	ICANN	互联网名称与数字地址分配机构 6、域名的发展 	①、域名通过维护文件服务器上的hosts文件解析 	②、通过计划任务,定时下载hosts 	③、搭建域名服务器 	④、搭建分布式存储  	缺点: 		相应时间长,管理相对麻烦 	优点: 		管理高效,命名简单 7、域名分类 	www.zol.com.cn. 	最右边为根域、一级域名、二级域名、三级域名、主机名 	一级域:组织域,国家域 8、工作方式 	递归查询: 		必须使用准确的查询结构回复客户机 		若DNS服务器本地没有存储该信息,那么该服务器会询问其他服务器 		并将结果返回给客户机 	迭代查询: 		服务器会向客户机提供其他能够解析请求的DNS服务器地址告诉客户机 		另一台DNS服务器地址 		客户机在向DNS服务器发送请求,依次循环直到返回结果  9、服务器类型 	主域名服务器 	从域名服务器 	缓存域名服务器 	分离解析域名服务器 

二、配置
1、软件:bind
2、服务名:named
3、端口:
UDP 53 数据通讯(域名解析)
TCP 53 数据同步(主从复制)
4、配置文件:
主配置文件:/etc/named.conf 服务器运行参数
区域文件:/etc/named.rfc1912.zones 当前DNS服务器所解析的区域配置
数据文件:/vat/named/xx.xx 域名和IP地址对应关系
正向解析数据文件
反向解析数据文件
5、配置项
SOA 起始授权记录

6、从服务器的压力 	减轻主服务器的压力 	从服务器拷贝文件 

一、FTP
1、概述
FTP:文件传输协议,实现文件共享

	NFS:网络文件系统,(可文件共享) 	SMB:服务信息块,(可文件共享) 2、链接类型 	控制链接(命令连接): 		用来发送FTP的命令信息	TCP21 		特点:客户端发送请求,服务器响应 		         若没有设置超时时间,那么控制连接将一直保持	 	数据连接:用来上传下载数据	TCP20 		特点:按需打开。按需关闭,必须与命令连接相关联 		         有可能同时出现多条数据连接,如mget 3、工作模式: 	主动模式(主动发送给客户机) 		服务器端: 			控制连接:21端口 			数据连接:20端口 	被动模式(等客户机自己来拿) 		客户端: 			控制连接:21端口 			数据连接:随机端口(1024-65535) 4、验证类型: 	匿名用户:不需要用户名和密码 	本地用户:即系统用户,通常全程是明文传输,因此特定系统用户 

应该禁止使用本类型
虚拟用户:通过虚拟出来的用户名登录,配置相对复杂,通过映射
系统用户进行登录
二、配置
1、软件
服务器端:
proftp、pureftp、vsftpd(体积小,安全性,本机自带)
server-U、IIS、fillezilla
客户端:
ftp、lftp
gftod、flashFXp、cuteftp
2、服务名:vsftpd
3、主目录:/etc/vsftpd
4、主配置文件:/etc/vsftpd/vsftpd.conf
5、用户控制文件:/etc/vsftpd/user_list
/etc/vsftpd/ftpusers
6、配置项

三、实验
匿名用户
用户名:fig或anonymous

	230 Login successful		登录成功 	550 Permission denied	权限拒绝 	553 Could	not create fille	不能创建目录 	操作权限由FTP权限和目录权限组成。  	默认目录: 		登录目录:/var/ftp 		操作目录:/var/ftp/pub 			/var/ftp自定义目录 		 	FTP权限:anonymous_enable=YES	启用匿名用户 		anon_upload_enable=YES	允许匿名用户上传权限 		anon_nkdir_write_enable=YES	允许创建目录 		anon_other_write_enable=YES	允许其他写入操作(重命名,删除)				 2、本地用户 	用户名:系统用户名 	默认目录:登录用户的家目录 	FTP权限:local_enable=YES	启用本地用户 		local_umask=022	本地用户反码 		local_root=/目录	更改默认目录 		chroot_local_user=YES	禁锢家目录	chroot_local_user=YES   chroot_list_enabble=YES	不能同时打开 		chroot_list_enabble=YES	禁锢家目录,不能切换用户(第97行,必须把99行也开启)	 		chroot_liat_file=/etc/vaftpd/chroot_list  该文件中的用户不能更改目录(将用户添加其中)	/etc/vaftpd/chroot_list目录需要自己创建  		userlist_enable=YES 		userlist_deny=YES	拒绝userlist文件中的用户登录FTP服务器  		userlist_enable=YES 		userlist_deby=NO	仅允许user_list文件中的用户登录FTP服务器  		ftpusers	拒绝ftpusers文件中的用户登录FTP服务器,及时生效,无论user_list如何设置 	本地用户使用被动模式 		pasv_enable=YES	启用被动模式 		pasv_min_port=2001 最小从哪开始 		pasv_max-port=2005 最大到哪截至		 		 3、其他配置项 	wriye_anable	是否启用写入权限 	download_enable	是否允许下载 	max_clients	限制并发客端连接数 	max_per_ip	限制同一个IP的并发数量 	dirmessage_enable	允许配置目录提示信息 	idle_session_timeout	设置空闲连接超时 	ftpd_banner	FTP的欢迎提示信息 	banner_file	FTP的欢迎提示文件 4、虚拟用户 	1、创建虚拟用户  	2、创建虚拟用户映射的系统用户  	3、建立支持虚拟用户的PAM认证文件  	4、启用虚拟用户  	5、为不同虚拟用户创建独立配置文件  5、 

一、概述
1、文件共享
NFS 网络文件系统
SMB 服务信息块
Netbios 网络基本输入/输出系统 API 接口

	SMB更改为CIFS	公共互联网文件系统 	SMB-->samba 2、SAMBA特点 	跨平台 	支持在线编辑,无需下载 	使用SMB和CIFS协议 

二、配置
1、服务
nmbd:通过netbios协议,实现计算机名的解析 UDP137 UDP138
smbd:实现文件共享 TCP139 TCP445
2、软件
samba
3、主目录
/etc/samba
4、主配置文件
/etc/samba/smb.conf
5、配置项
security 安全级别
share 不需要提供用用户名/密码
user 需要提供用户名/密码,由本地samba服务器验证
server 需要哦提供用户/密码,可指定其他主机或另一台主机samba服务验证
domain 需要提供用户/密码,由域控制器进行身份用验证

	secueity=share 

三、实验
1、匿名用户访问
[share]
comment 描述信息
pash 真实路径
public 允许所有人访问

	smbclient -L // 服务器地址	查看 	smbclient // 服务器地址/共享名 	登录 2、本地用户访问 	security=user 	 	[share] 		comment		描述信息 		path		真实路径 		read only	所有人只读访问  	useradd		创建系统用户 	smbpasswd	管理samba用户 		a	添加 		x	删除 		d	禁用 		e	启用 	pdbedit -L	查看samba用户列表 	 	smbclient -U zhangsan -L // 192.168.1.250 	smbclient -U zhangsan // 19255.168.1.250/zhangsan	   3、Windos访问	  4、权限控制 	read only	设置只读访问 	writable	设置写入权限 	write list	设置写入列表 	valid users	设置合法用户 	browseable	是否网络可见 5、访问控制 	hosts allow	允许个别,拒绝所有	192.168.1.1 192.168.1. 	hosts deny	允许个别,拒绝所有	 			不能同时启用,只能启用一个 6、用户映射 	vim /etc/samba/smbusers 			zhangsan = zhaosi 	username map = /etc/samba/smbusers 7、映射网络驱动器 

LAMP平台
一、概述
1、LAMP
L Linux 提供稳定的底层平台
A apache 网站服务器,提供网站服务
M mysql 数据库服务器,提供数据库服务
P PHP 网站开发语言,提供动态网站程序解析
2、LAMP架构
单层架构、双层架构,三层架构
3、网站架构
动态网站apache
静态网站nginx
二、LAMP平台
1、环境
①、编译环境
gcc
②、关闭RPM服务
service httpd stop(关闭)
chkconfig htttpd off(关闭开机自启)

		service mysqld	stop(关闭) 		chkconfig mysqld off(关闭开机自启) 	③、关闭防火墙,seLinux 			service iptables stop 			chkconfig iptables off  			setenforce 0 			vim /etc/sysconfig/selinux 				selinux=disable		 	④、关闭不必要的服务 		 	⑤、硬盘空间 2、安装 	①、将lamp.iso加载进光驱,将其内容拷贝至/usr/src中,然后将光盘 

更换为系统盘,配置yum

一、概述
1、协议
http:超文本传输协议
html:超文本表示语言

	url:统一资源定位 		列如:http//www.jx.com:80/index.html 	 2、安装 	源代码 		 	RPM  3、相关文件 	主配置文件 		源代码:/usr/local/apapche2/etc/http.conf 			/usr/localapache2/etc/extra/(补全)*/conf 		RPM: 			/etc/htttpd/conf/httpd.conf 	默认首页位置: 		源代码:/usr/local/apapche2/htdocs/ 		RPM:/var/www/html 	日志保存位置: 		源代码:/usr/local/apapche2/logs 		RPM:/var/log/httpd 	 	源代码主配置文件:/usr/local/apapche2/etc/http.conf中各段意思 		31行 ServerRoot “/usr/local/apache2”	Apache安装路径 	  	52行 Listen 80     Apache监听端口号 		66行 LoadModule       加载模块(模块可拆卸) 		150行<IfModule unixd_module> 对某一个模块加一些选项,参数 		181行ServerAdmin	管理员邮箱 		190行ServerName		指定当前网站域名 		197行<Directory>	对某一个目录设置访问规则 			AllowOverride none	权限开关 			Roquire all denied	拒绝所有人访问 		215行<Directory "/usr/local/apache2/htdocs">  对首页文件的访问区域 		228行Options Indexes FollowSymLinks	设置目录的选项 		249行Require all granted	允许所有人访问 		247行<IfModule dir_module>	目录模块 			DirectoryIndex	声明首页文件的默认名 		255行<Files ".ht*">	文件配置区(以.ht开头的文件是权限文件) 		266行ErrorLog “logs/error_log" 错误日志 		295行Customlog ”logs/access_log"正确日志 		273行LogLevel warn	日志级别 		275行<IfModule log_config_module> 日志格式 		304行<IfModule alias_module>	别名模块(给一个较长的名字起一个较短的名称) 

二、应用
1、目录与权限
indesxes 若首页目录中,找不到首页文件,则列出该目录下所有内容
FollowSymLinks 允许首页文件是链接文件

2、访问控制 	仅允许192.168.1.0/24网段的主机访问 		<requireall> 			requireall all granted 			requireall ip 192.168.1.0./24 		</ requireall> 	 		仅拒接192.168.1.0/24网段主机访问 		<requireall> 		 	requireall all granted 			requireall not ip 192.168.1.0/24 		</requireall>  3、身份认证 	authname	验证信息 	authtype	验证类型 	authserfile	验证文件 	require vaild—user	合法用户 	 	htpasswd -c	验证文件路径 用户名 	添加验证用户 	htpasswd -m	验证文件路径用户名	追加验证用户 4、虚拟主机 	定义:在一台物理服务器上,构建多个网站服务,并同时运行,互不干扰  	基于域名 	<VirtualHost *:80> 			DocumentRoot "/usr/local/apache2/htdocs/webl" 			ServerName web1.jx.com 	</VirtualHost> 		 	<VirtualHost *:80>		 			DocumentRoot”/usr/local/apache2/htdocs/web2“ 			ServerName web2.jx.com 	</VirtualHost> 	 	基于IP 	创建虚拟IP	ifconfig eth0:0 192.168.1.250 netmask 255.255.2555  		 	基于端口 		listen 8000  5、个人主页 	定义:在网站服务器上,为用户单独分配一个页面 6、地址重写 

LNMP
一、概述
1、区别
①apache
模块化、功能较全
对动态网站支持较好,与PHP兼容性好
地址重写与加密功能强大

		配置相对复杂 		同步阻塞型应用 	②nginx 		模块相对较少,高性能模块出色 		对静态网站支持较好 		反向代理与负载均衡功能强大 		配置相对简单 		异步非阻塞型应用      消息通信机制: 		 同步 			发出“调用”时,没有结果之前,该调用就不返回 

一旦返回,即可得到返回值

		 异步 			调用发出以后,该调用就直接返回,没有返回结果      程序等待调用结果的状态 		阻塞 			调用结果返回之前,当前线程会被挂起,只有得到结果 

之后才会返回
非阻塞
不能立刻得到结果之前,该调用不会阻塞当前线程

	2、网站的请求流程 		①用户向网站发起访问,请求首先到达网卡上。由网卡把数据传递到内核 		②这个请求数据到达内核之前,由内核将请求数据解封装,得到 

请数据,得知请求的是网站服务器,将数据发给网站服务器。
③网站服务器收到请求数据之后,发现客户端要求的是index.html的首页文件
就会向内核发起请求
④内核发现,网站要访问一个页面文件,这个页面文件在硬盘里存放、
内核通过驱动程序就会向硬盘发起访问
⑤内核从硬盘中取回想要的文件,并且存放在缓存中,然后通知网站网页文件
已经准备好
⑥网站的线程就会向内核发起访问,将内核缓存中的首页文件,放到网站中的缓存区域中
⑦然后网站会向用户进行响应,并且将首页文件交还给内核,告诉内核就使用这个文件回复客户端,
内核收到后,将数据进行封装,从网卡发送给用户。

	3、总结 		若是处理静态页面,尤其是高并发场景,适合使用nginx 		若是处理动态页面,尤其是追求稳定性,则适合使用apache 	4、LNMP 		a、nginx作用 			①、充当网站服务器 				nginx转发给后端的apache处理动态页面 				通过PHP-FPM模块 			②、充当代理服务器 				正向代理 				反向代理 	  	 processes	核心数 connections	并发数 核心数*并发数=最大访问量 mime.types	应用程序的配置文件 keepalive_timeout 连接超时时间 sendfile on	下载 

一、Nginx
1、配置
配置项 nginx apache
虚拟主机 server virtualhost
监听端口号 listen listen
主机名称 server_name servername
配置区域 location directory、file
首页文件位置 root documentroot
默认首页名称 index directoryindex
认证信息 auth_basic、auth_basic_user_file
authname、authype
访问控制 允许 allow required all granted
拒绝 deny required all denied
2、虚拟主机

一、数据同步
1、数据备份:cp、mv、tar、dd、mount
2、RSYNC
增量的备份工具
同步指定目录及子目录的内容,还可保留文件属性
3、类型
SSH
RSYNC

	客户端-->发起端 	服务器-->同步源 

二、搭建同步源
1、基于SSH的同步源
同步源:
创建测试目录
创建测试文件
创建测试用户
设置权限
发起端:
创建同步目录
创建测试文件
测试
下行同步:
rsync -avz 服务器用户@服务器IP地址
:服务器目录/文件 /本地路径
上行同步:
rsync -avz /本地路径/本地文件 服务器用户
@服务器地址:服务器目录
2、基于RSYNC的同步源
同步源:
创建测试目录
创建测试文件
创建配置文件
创建密码文件
开启服务
发起端:
创建同步目录
创建测试文件
测试
rsync -avz 服务器用户@服务器地址::共享名/ 本地目录
rsync -avz rsync://服务器用户@服务器地址/共享名 /本地用户
三、免密码验证
1、基于SSH的同步源
ssh-keygen -t rsa
ssh-copy-id 服务器用户@服务器地址
2、基于rsync的同步源
export RSYNC_PASSWORD=123456
四、inotify
inotifywait
-m 持续监控
-r 递归
-q 简化输出
-e 监控的事件类型 modify create delete move

一、概述
1、邮件角色
MTA 邮件传输代理 服务器中接受邮件 sendmail、
exchange、postfix
MUA 邮件用户代理 替用户收发邮件,outlook、Foxmail
MDA 邮件分发代理 将收到的邮件保存至邮箱 maildrop
MRA 邮件检索代理 替用到邮箱收邮件 dovecot
2、邮件认证
开放式中继(openrelay)
SASL 简单验证安全层
3、协议
SMTP 简单邮件传输协议 TCP25发邮件的端口 SMTOPS 465
POP3 第三版邮局协议 TCP110 POP3S 995
IMAP4 第四版互联网邮件访问协议 TCP143 IMAP4S 993
POP3将服务器的邮件下载到本地处理
IMPA4与服器交互后,在服务器端处理
4、邮件地址
邮件用户@邮件域
mail.jx.com
zhngsan@jx.com
二、邮件服务器
1、MTA
sendmail
qmail
postfix
2、配置
主目录:/etc/postfix
配置文件:master.cf
main.cf

		myhostname	邮件服务器主机名 		mydomain	邮件域 		maorigin	设置允许发送邮件的用户的邮件域 		mydestination	设置允许接收邮件的用户的邮件域 	 		home_mailbox	设置邮箱目录 3、测试 	发邮件 		telnet mail.extmail.org 25 		 		helo mail.extmail.org 		mail from:发件人地址 		rcpt to:收件人地址 		data 		邮件内容 		.	内容结束 		quit 	收邮件: 		telnet mail.extmail.org 110 		 		user lisi 		pass 123  		list 显示邮件列表 		retr 查看指定邮件内容 

【数据库】

一、概述
1、数据库
数据库(database)是按照数据结构来组织,存储和管理数据的仓库
2、数据库管理系统
a、定义
将能够操控和管理数据库的大型软件,称之为数据路管理系统,
通过它创建、使用和维护数据库,保证数据库中数据的安全性和完整性,简称DBMS(database management system)
3、类型
mysql、oracle(类Linux)、SQL Server、Redis、mongoDB等
关系式数据库、mysql
SQL Server 闭源、对Linux兼容性不好,适合安装在Windows系统上
Oracle 闭源、价格昂贵、对Linux兼容性好、不适合用于中小型企业中
mysql 开源、灵活、版本众多,更具有代表性,主要应用于中小型企业

4、数据库与文件系统的区别 	a、数据冗余和不一致性 	b、数据访问难度 	c、数据格式 	d、完整性 	e、并发访问 	f、安全性问题 5、数据库模型 	a、层次模型 		按照层次结构的形式组织数据库数据的模型 		缺点:数据冗余 		典型:IBM	IMS数据库 	b、网状模型 		按照网状结构的形式组组织数据库数据的模型 		缺点:数据量增加,网状结构越发复杂,后期维护成本过高 		典型:美国数据库系统语言协会	DBTG数据库 	c、关系模型 		按照行和列结构,组成数据库数据的模型 		以关系或表作为描述数据的基础,拥有严格的数学理论基础 		 		以关系模型构建的数据库关系管理系统称之为关系数据库关系系统,简称RDBMS 6、数据模型 	陈品山	实体关系建模 	陈氏表示法,陈氏模型 也称之为E-R模型 		关系三要素:实体、联系、属性 			实体:数据对象,客观存在的事物 			联系:多个实体之间的关联关系 			属性:实体的某一个特性 			 7、SQL语句 	结构化查询语言 	【埃德加 柯德 关系式数据库之父】 	【唐-钱伯林   SQL语句之父】 	1979年,甲骨文的ORACLE公司推出关系式数据库产品 ORACLE 	1980年,IBM推出关系式数据库SYSTEM/38 	1983年,IBM推出DB2 	ANSI 美国国家标准协会,推出统一SQL标准 8、SQL类型 	SDL	数据操控语言	操作数据库中的数据 		如:select、insert、update、delete 	DDL	数据描述语言	建立数据库、定义数据关系 		如:create、alter、drop等 	DCL	数据控制语言	控制数据库组件的权限 		如:grant、revoke 

一、数据库结构
1、数据库结构
a、文件的逻辑架构
上层:文件
底层:二进制形式的数据
中间层:文件系统
b、数据库的逻辑架构
上层:数据表
底层:数据文件
中间层:存储引擎
2、存储引擎
a、概念
定义:存储数据、保存数据、更新数据等的实现方法
b、musql的存储引擎
1、MyISAM
特点:Mysql的默认存储引擎,最为常用。较高的写入、
查询速度,不支持事务(行级锁,页级锁)等功能
事务:SQL语句的批处理(要么去全部成功,要么全部失败)
锁:
行级锁:对单独一行加锁,效率低,冲突少 需要:INNQDB 存储引擎
表级锁:锁定整张表,效率高,冲突少 需要:MyISAM 存储引擎
页级锁:锁定相邻的多行记录,折中方案 需要: DBD 存储引擎
约束:
域约束:约定的数据的类型
外键约束:通过其他数据进行约束的类型
索引:对数据库表中一列或多列的值进行排序的一种结构,
使用索引可快速访问的特定信息。
2、InnoDB
MyISAM的升级版,提供了事务、行级锁,外键约束等功能
3、Memory
只存在于内存中,通过hash(散列)来存取数据,速度最快,
通常无法持久保存。
3、数据的存储和查询
a、存储管理器
专门的存储件,通过DDL(数据描述语言)创建表的结构,然后通过
DML(数据操控语言)保存SQL语句的处理结果
权限及完整性管理器
设置存储权限
事务管理器
保证数据的原始状态
文件管理器
保证数据文件和数据库数据的对应关系
缓存区管理器
管理缓冲空间
b、查询管理器
专门查询组件,负责接受用户的查询请求、并且将查询请求转交
给存储管理器,实现数据管理去的组件
DDL、DML解释器
同于理解分析DDL和DML的操作
查询执行引擎
具体执行操作的组件
4、工作模式
a、数据库后台
Mysql是单进程多线程的应用程序类型
1、守护线程
后台默认执行的线程,不需要和用户交互,防止数据丢失
2、应用线程
数据库处理用户请求的线程,用户推出后,终止该线程
b、数据库性能
1、垂直扩展
换更好的硬件
2、缓存
memcache、redis、MongoDB
3、线程重用
用户退出,不撤销线程
c、数据库缺点
SMP支持不够
同一个任务只能由一个CPU完成

Mysql版本
1、版本
社区版:免费、没有技术支持、没有技术责任方
企业版:收费、有售后支持、更稳定,可靠
集群版:基于集群需求,添加存储引擎、集群管理器等新功能
SO7:默认MariaDB
2、安装
mysql:客户端链接工具
mysql-server:Mysql数据库主程序
3、配置
服务名:mysqld
段口号:TCP 3306
配置文件:/etc/my.cnf
二、操作
1、结构
DBMS 数据库管理系统
database 数据库
table 数据表
data 数据记录
2、登录
命令:mysql (进入数据库)
数据库每条命令,必须以分号结尾
查看数据库命令:show databases;

	u	指定登录用户 	h	指定登录主机 	P	指定登录端口号 	p	指定登录密码 3、创建密码 	mysqladmin -uroot(root可以替换用户)password '密码' 4、创建用户 	登录数据库 		在 create user '用户'@’登录地址’indentified by ’密码’; 		 create user‘zhangsan‘@’localhost‘identified by ’123456‘; 		 create user‘lisi‘@’%‘identified by ’123456‘; 		 %代表仅远程登录 5、修改普通用户密码 	修改当前用户密码:set password = password(“密码”); 	修改指定用户密码:set password for ’zhangsan‘@’localhost‘=passwd(“密码”) 6、修改管理员密码 	service mysql stop  	停掉mysql服务 	修改主配置文件 	vim /etc/my.cnf 		添加skip-grant-tables 	service mysql start	启用数据库 	进入数据库 	强制覆盖掉密码并修改密码 	update mysql.user set passord=password('123')where user=’root‘; 	将配置文件中的选项删除 	vim /etc/my.cof 		删除:skip-grant-tables 	重启数据库服务 	service mysql restart 	登录。测试 	mysql -uroot -p123 

三、数据库的 增删改查
1、查看
show databases;查看数据库
use 数据库名; 进入数据库
show tables; 查看数据库中的数据表
insert 插入

		select * from 数据               你    表	查看指定数据表中的所有内容 		select id from 数据表	查看指定数据表中的内容 		select id,name from 数据表	查看指定数据表中的内容 		describe 数据表		查看数据表结构	 	2、创建 		命令:create database 库名;	创建数据库 		      create table 数据表名 (字段1 属性,字段2 属性,···,字段n); 			 			create table stu (id int, name chare(40)); 				int 	代表整数(非字母) 				char	代表字符数 				unsigned代表不包含负数 				not null 不能为空 				null	可以为空 				primary key(id)主键   			insert(插入) into 数据表 values(插入值) (值1,值2.···,值N); 			 	3、删除 		drop database	数据库;	删除数据库 		drop tablle	数据表; 	删除数据表  	删除数据:delete from 表名 where id=值N   删除id第9行 		  delete from 表名 where 字段 between 值1 and 值2; 		 		 	4、插入数据 		插入一行:insert into 表名 (name,age,info) values (‘a2’,22,’student‘) 		插入多行:insert into 表名 (name,age,info) values (‘a2’,22,’student‘),(‘a3’,23,’student‘) 		将一个表中的数据导入另一个数据 			insert into stu2 (id,name)select id,name from stu; 	5、修改 	修改单行:update 表名 set age=26(字段1=值1),info='dancer’(字段2=值2) where id=9;(主键=值N) 	修改多行:update 表名 set age=26(字段1=值1),where 主键(id号)between(位于什么之间) 值1 and 值2 		 	alter  修改数据表 		rename	改表名 		modify	改属性 		change	改字段 		add	添加字段 		 		drop	删除字段 		first、after 位置 		 		格式:alter table 旧表名 rename 新表名; 		格式:alter table 表名 modify name char(20) not null default ‘’; 		格式:alter table 表名 change info information char(50)null; 		格式:alter table 表名 add birth date;		添加字段 		 		格式:alter table * from drop 表名	删除字段 		格式:alter table 表名 add birth date after id;	(添加到id之后)  	6、权限 		grant	授权 al	所有权限 on 数据库.数据表 to‘用户’@‘地址’identified by ‘密码’; 		 		格式:grant all *.* to ‘'zhangsan'@localhost'identified by ‘密码’;  		revoke	取消权限 			revoke 取消的权限1,取消的权限2··· on 数据库.数据表 from ‘用户’@‘地址’ identified by ‘密码’ 			revoke create(创建),drop(删除) on *.* from ‘zhagnsan’@localhost‘; 			取消张三用户所以数据库,数据表,创建,删除的权限  		show grants for ’zhngsan‘@’localhost 

MySQL备份

一、数据备份
1、类型
a、冷备份
关闭服务,备份数据
b、快照备份
LVM
c、逻辑备份(安装mysqldump自带)和物理备份
d、商业备份工具
2、mysqldump
备份:
mysqldump -uroot p 数据库 > 备份文件
mysqldump -uroot p 数据库 数据表 > 备份文件
mysqldump -uroot p --databases > 备份文件
还原:
mysql -uroot -p 数据库 < 备份文件
mysql -uroot -p < 备份文件
3、musqlhotcopy
备份:

		mysqlhotcopy --flusdhlog -u=‘root’-p=’123‘ --regexp=^jx backup 	还原: 		cp -rp /backup/* /var/lib/mysql/ 4、总结 	mysqlhotcopy是快速文件意义上的复制,而mysqldump是SQL语句是集合 	mysqlhotcopy只能运行在当前主机,而mysqldump可以远程操作(注意:备份结果还是保存在当前主机) 	mysqlhotcopy仅适用于MyISAM引擎,而mysqldump支持MyISAM和InnoDB 

二、日志管理
1、查看日志
命令:show global variables like ‘%log%’
2、错误日志
作用: 记录服务器运行过程中的错误信息
服务器启动和关闭的信息
从服务器启动进程时产生的信息
查看:命令:show global variables like ‘%log_error% (错误日志的路径)
show global variables like ‘%log_warnings% (是否启用错误日志)
3、一般查询日志
作用:记录用户的查询操作(默认关闭,在数据库的配置文件打开)
general_log 是否启动
general_log_file 日志位置
log 全局日志
log_output 记录类型 file table nane
4、慢查询日志
slow_query_log 是否启动慢查询日志
slow_query_log_file 日志位置
long_query_time 时间设置

	log—slow—queries=/var/mysql—slow.log 5、二进制日志 	作用:记录更改数据库状态的操纵 	log_bin		是否启动 	show binary;	正在使用的二进制文件 	 	show binlog events in ‘mysqlbin.000001’查看二进制文件的内容 	 	还原命令: 		mysqlbinlog 			——start—position 			——stop—position 			使用文件大小来还原 	 			——start—datetime 			——stop—datetime 			使用文件时间来还原 	例如:mysqlbinlog mysqlbinlog.000001 ——start—position 106 ——stop—position 264 | mysql -uroot -p123 	列如:mysqlbinlog mysqlbinlog.000001 ——start—datetime ‘2020-04-29 17:59:53’——stop—datetime ‘2020-04-29 17:59:59’| musql -uroot -p123 6、事务日志 7、中继还原 (自己查询)   数据库信息同步 -多级配置		 

一、主从配置
作用:从服务器提供备份
二、主主配置
作用:减轻服务器的压力,并且互为主从,进行备份
三、一主多从配置
作用:提供多台从服务器进行备份

一、多主一从配置
作用:节省开支,仅通过一台服务器进行备份
二、读写分离
中间件(镜像)
mysql proxy(官方,适合较少文件、支持读写分离)
atlas(支持读写,性能损耗大)
amoeba、cobar

一、概述
1、关系数据库

2、nosql 	全称:mot only sql 	非关系式数据库 3、nosql的优势 	a、数据库高并发读写的需求 	b、海量数据的高效存储和访问 	c、高扩展性和高可用性 	d、其他 4、特点 	易扩展 	大数据量、高性能 	灵活的数据模型 	高可用 5、类型 	memcache         Redis 	mongoDB 	hbase 	cassandra 

二、安装配置
1、安装
2、配置
基于键值(key)的存储类型
3、数据类型
string 字符串类型
hash 散列
list 队列
set 集合
zset 有序集合
三、数据操作
1、string
set 设置新建(创建) 如:set a 1
get 查看新建(查看) 如:get a
mset 批量设置新建(同时创建多个) mset a1 1 a2 2 a3 3
mget 批量查看新建 (同时查看多个) gmset a1 a2 a3
若值中间有空格加引号 set a1 ’zhang san‘

	setnx	设置新建,若存在。则放弃:若不存在,则创建 	getset	 V??VZ'x'cV?.xc?V.xcv.xc;'v,;'xc,v;lsv,;lsd,v;lsd,vsfld,lsd,fvd,fvds;,lvds,lv',lvf,vglf,vlf,dlv,fdl      	keys * 	查看所有键 	 	ttl	查看生存周期(存在时间),-1:表示键存在,但没有设置生存周期 					 -2:表示键不存在 	setex	设置生存周期  格式: setex 名 存在时间 值 	setrange替换字符串    格式: setranfe 名 第几个字符(第一个为0)替换值 	append	追加字符串    格式: append   名 追加字符 	strlen	查看字符串长度	格式:strlen 名  	 	incr	增加1	格式 :incr 名 (每次加一) 	decr	减1	格式 :decr 名  (每次减一) 	incrby	增加指定数值	格式 :incrby 名 追加值 	decrby	减少指定数值	格式 :decrby 名	 减少值  2、hash 散列 	hset	设置新建 	hget	查看新建 	hkeys 	查看指定键对应的所有字段  	hmset	批量设置新建 	hmget	批量查看新建 	 	hexists	查看指定键是否存在  	hsetnx 	设置新建,若存在。则放弃:若不存在,则创建 	hvals	查看指定键对应的所有值 	hgetall	查看指定键对应的所有字段和值 	hdel	删除指定字段 	hlen	查看指定键的字段总数 	 3、list	队列 	lpush	添加队列		格式:lpush 名 元素  (lpush l1 1 2 3 4 5 6 7) 	lrange	显队列内容	格式:lrange l1 0 -1  	llen	显示队列中的元素的个数	格式:llen l1 	lset	替换队列内容(通过位数)	格式:lsedt 位数 更改元素 (lset l1 2 a) 	 	linsert	插入队列内容(通过元素)	格式:linsert 名 before(插入)2 “hello” 	lpop	删除对列中的第一个元素	格式:lpop 队列名  	rpop	删除对列中的最后一个元素	格式:rpop 队列名 4、set	集合 	sadd	创建集合		格式:sadd 名 数据 (sadd l1 1 2 3 ) 	smembers查看集合内容	格式:smembers 名   (smembers l1) 	srandmember随机抽取集合数据	格式:srandmember 名 (srandmember l1) 	spop	随机删除	集合数据		格式:spop 名 (spop l1) 	scrd	统计集合	中数据的个数		格式:scrd 名 (scrd l1) 	sismember查看指定数据是否存在于集合中(返回值为1:存在 返回值为0:不存在)格式:sismember 名 数据 (sismember l1 2 ) 	sinter 	查看交集			格式:sinter 名 名 (sinter s1 s2) 	sdiff	查看差集	 	sunion	   	格式:suniontore  	sinterstore查看交集并保存			格式:sinterstore 名 名 新名 (sinterstore s3 s1 s2) 	sdiffstore 查看差集并保存 	sunionstore查看并集并保存 5、zset有序集合 	zadd	创建集合		格式:zadd 名 序号 值 (zadd 1 aa 2 bb 3 cc) 	zrange	查看集合	(序号从小到大)	格式:zrange z1 0 -1 withscores 	zrevrange查看集合(序号从大到小)格式:zrevrange z1 0 -1 withscores 	zrangebyscore查找指定序号范围内的元素	格式:zrangebyscore z1 2  5 withscores 	zcount	查看指定序号范围内的元素数目	格式:zcount z1 2 5 	zcard	查看集合中的元素个数		格式:zcaed z1 	zincrby	创建或增加序号			格式:zinceby z1 4 dd(重复命令:增加序号) 	zrank	返回指定元素的位数(序号从小到大)格式:zrank z1 dd 	zrevrank返回指定元素的位数(序号从大到小)格式:zrevrank z1 dd 	zrem	删除指定元素			格式:zrem z1		 6、其他 	keys *	查看所有键 	exists	查看指定键是否存在(存在唯1:不存在为0)	格式:exists 键 	select  切换库(0-15)   格式:select 库名 	move 	移动键 至 指定库	 格式:move l1 2 	type	查看指定键的类型	格式:type 键名 	rename	重命名		格式:rename 旧名 新名  	dbsize	统计当前所有键的数量 	info	获取服务器配置信息 	flushdb 删除当前库中所有键 	flushall删除所以库中所有键 

二、其他应用
1、改密码
进入 vim redis.conf配置文件
391行 取消注释
requirepass 密码
auth 密码 或 redis-cli -a 密码
2、持久化存储
进入 vim redis.conf配置文件
187行 dir 指定备份文件的位置(决定路径)
3、主从配置
进入vim redis.conf配置文件
pidfile 指定进程文件的位置
port 指定端口号
dir 指定备份文件位置
slaveof 指定主服务器的IP和端口
masterauth 指定主服务器的认证信息