今天的课程很有意思,学习的是所有应用都离不开的Linux和无人值守装机。
数据库管理系统是一种能够对数据库中存放的数据进行建立、修改、删除、查找、维护等操作的软件程序。它通过把计算机中具体的物理数据转换成适合用户理解的抽象逻辑数据,有效地降低数据库管理的技术门槛,因此即便是从事Linux运维工作的工程师也可以对数据库进行基本的管理操作
MySQL是一款市场占有率非常高的数据库管理系统,技术成熟、配置步骤相对简单,而且具有良好的可扩展性。但是,由于Oracle公司在2009年收购了MySQL的母公司Sun,因此MySQL数据库项目也随之纳入Oracle麾下,逐步演变为保持着开源软件的身份,但又申请了多项商业专利的软件系统。开源软件是全球黑客、极客、程序员等技术高手在开源社区的大旗下的公共智慧结晶,自己的劳动成果被其他公司商业化自然也伤了一大批开源工作者的心,因此由MySQL项目创始者重新研发了一款名为MariaDB的全新数据库管理系统。该软件当前由开源社区进行维护,是MySQL的分支产品,而且几乎完全兼容MySQL。
初始化mariaDB服务
yum install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
在确认MariaDB数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据库的安全性和正常运转,需要先对数据库程序进行初始化操作。这个初始化操作涉及下面5个步骤。
1、设置root管理员在数据库中的密码值(注意,该密码并非root管理员在系统中的密码,这里的密码值默认应该为空,可直接按回车键)。
2、设置root管理员在数据库中的专有密码。
3、随后删除匿名账户,并使用root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。
4、删除默认的测试数据库,取消测试数据库的一系列访问权限。
5、刷新授权列表,让初始化的设定立即生效。
在很多生产环境中都需要使用站库分离的技术(即网站和数据库不在同一个服务器上),如果需要让root管理员远程访问数据库,可在上面的初始化操作中设置策略,以允许root管理员从远程访问。然后还需要设置防火墙,使其放行对数据库服务程序的访问请求,数据库服务程序默认会占用3306端口,在防火墙策略中服务名称统一叫作mysql
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload
登录MariaDB数据库。其中,-u参数用来指定以root管理员的身份登录,而-p参数用来验证该用户在数据库中的密码值。
[root@linuxprobe ~]# mysql -u root -p
Enter password: 此处输入root管理员在数据库中的密码
登录后开始操作数据库,使用数据库专门的命令,注意命令要以;结尾(命令不能缩小,命令不区分大小写),常用命令如下
SHOW databases;
SET password = PASSWORD('linuxprobe');
CREATE USER luke@localhost IDENTIFIED BY 'linuxprobe';
use mysql;
SELECT HOST,USER,PASSWORD FROM user WHERE USER="luke";
SHOW GRANTS FOR luke@localhost;
SHOW TABLES;
GRANT SELECT,UPDATE,DELETE,INSERT ON mysql.user TO luke@localhost;
REVOKE SELECT,UPDATE,DELETE,INSERT ON mysql.user FROM luke@localhost;
表18-1 GRANT命令的常见格式以及解释
命令 | 作用 |
GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名 | 对某个特定数据库中的特定表单给予授权 |
GRANT 权限 ON 数据库.* TO 用户名@主机名 | 对某个特定数据库中的所有表单给予授权 |
GRANT 权限 ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予授权 |
GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名 | 对某个数据库中的所有表单给予多个授权 |
GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予全部授权(需谨慎操作) |
CREATE DATABASE linuxprobe;
SHOW databases;
use linuxprobe;
CREATE TABLE mybook (name char(15),price int,pages int);
DESCRIBE mybook;
INSERT INTO mybook(name,price,pages) VALUES('linuxprobe','60', '518');
select * from mybook;
UPDATE mybook SET price=55 ;
SELECT name,price FROM mybook;
DELETE FROM mybook;
INSERT INTO mybook(name,price,pages) VALUES('linuxprobe1','30','518');
表18-2 用于创建数据库的命令以及作用
用法 | 作用 |
CREATE database 数据库名称。 | 创建新的数据库 |
DESCRIBE 表单名称; | 描述表单 |
UPDATE 表单名称 SET attribute=新值 WHERE attribute > 原始值; | 更新表单中的数据 |
USE 数据库名称; | 指定使用的数据库 |
SHOW databases; | 显示当前已有的数据库 |
SHOW tables; | 显示当前数据库中的表单 |
SELECT * FROM 表单名称; | 从表单中选中某个记录值 |
DELETE FROM 表单名 WHERE attribute=值; | 从表单中删除某个记录值 |
表18-3 where命令中使用的参数以及作用
参数 | 作用 |
= | 相等 |
<>或!= | 不相等 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索一个例子 |
IN | 在列中搜索多个值 |
SELECT * FROM mybook WHERE price!=80;
SELECT * FROM mybook WHERE price>75;
数据库的备份与恢复
mysqldump命令用于备份数据库数据,格式为“mysqldump [参数] [数据库名称]”。其中参数与mysql命令大致相同,-u参数用于定义登录数据库的账户名称,-p参数代表密码提示符。下面将linuxprobe数据库中的内容导出成一个文件,并保存到root管理员的家目录中:
mysqldump -u root -p linuxprobe > /root/linuxprobeDB.dump
恢复的方式也很简单:
mysql -u root -p linuxprobe < /root/linuxprobeDB.dump
使用PXE + TFTP +FTP + DHCP + Kickstart服务搭建出一个无人值守安装系统
PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统。Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。
主要通过以下五个步骤完成
1、DHCP部分
DHCP服务为客户机自动分配IP的同时也告知了启动的文件的名称。
允许了BOOTP引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态IP地址;在配置文件的最下面加载了引导驱动文件pxelinux.0(这个文件会在下面的步骤中创建),其目的是让客户端主机获取到IP地址后主动获取引导驱动文件,自行进入下一步的安装过程。
2、TFTP服务部分
配置TFTP服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过vsftpd服务程序将完整的光盘镜像文件传输过去。
yum install tftp-server
TFTP是一种非常精简的文件传输服务程序,它的运行和关闭是由xinetd网络守护进程服务来管理的。xinetd服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。需要开启TFTP服务程序,只需在xinetd服务程序的配置文件中把disable参数改成no就可以了。保存配置文件并退出,然后重启xinetd服务程序,并将其加入到开机启动项中(在RHEL 7系统中,已经默认启用了xinetd服务程序,因此在将其添加到开机启动项中的时候没有输出信息属于正常情况)。
TFTP服务程序默认使用的是UDP协议,占用的端口号为69,所以在生产环境中还需要在firewalld防火墙管理工具中写入使其永久生效的允许策略,以便让客户端主机顺利获取到引导文件。
[root@linuxprobe ~]# firewall-cmd --permanent --add-port=69/udp
[root@linuxprobe ~]# firewall-cmd --reload
3、配置SYSLinux服务程序
SYSLinux是一个用于提供引导加载的服务程序。在安装好SYSLinux服务程序软件包后,/usr/share/syslinux目录中会出现很多引导文件。我们用到的也就是里面的引导文件。
[root@linuxprobe ~]# yum install syslinux
[root@linuxprobe ~]# cd /var/lib/tftpboot
[root@linuxprobe tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@linuxprobe tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
[root@linuxprobe tftpboot]# cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .
先需要把SYSLinux提供的引导文件复制到TFTP服务程序的默认目录中,也就是前文提到的文件pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。另外在RHEL 7系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/media/cdrom目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP服务程序的默认目录中。
[root@linuxprobe tftpboot]# mkdir pxelinux.cfg
[root@linuxprobe tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
编辑这个default文件,把第1行的default参数修改为linux,这样系统在开机时就会默认执行那个名称为linux的选项了。对应的linux选项大约在64行,我们将默认的光盘镜像安装方式修改成FTP文件传输方式,并指定好光盘镜像的获取网址以及Kickstart应答文件的获取路径:
[root@linuxprobe tftpboot]# vim pxelinux.cfg/default
1 default linux
64 append initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet
4、配置VSFtpd服务程序
[root@linuxprobe ~]# yum install vsftpd
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
[root@linuxprobe ~]# cp -r /media/cdrom/* /var/ftp
在确认系统光盘镜像已经正常挂载到/media/cdrom目录后,把目录中的光盘镜像文件全部复制到vsftpd服务程序的工作目录中。
在firewalld防火墙管理工具中写入使FTP协议永久生效的允许策略,然后在SELinux中放行FTP传输
[root@linuxprobe ~]# firewall-cmd --permanent --add-service=ftp
[root@linuxprobe ~]# firewall-cmd --reload
[root@linuxprobe ~]# setsebool -P ftpd_connect_all_unreserved=on
5、创建KickStart应答文件
Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。
其实在root管理员的家目录中有一个名为anaconda-ks.cfg的文件,它就是应答文件。下面将这个文件复制到vsftpd服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是vsftpd服务程序数据目录中的pub子目录中)。使用chmod命令设置该文件的权限,确保所有人都有可读的权限,以保证客户端主机可以顺利获取到应答文件及里面的内容:
[root@linuxprobe ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
[root@linuxprobe ~]# chmod +r /var/ftp/pub/ks.cfg
[root@linuxprobe ~]# vim /var/ftp/pub/ks.cfg
6 url --url=ftp://192.168.10.10
21 timezone Asia/Shanghai --isUtc
29 clearpart --all --initlabel
如果觉得系统默认自带的应答文件参数较少,不能满足生产环境的需求,则可以通过Yum软件仓库来安装system-config-kickstart软件包。这是一款图形化的Kickstart应答文件生成工具,可以根据自己的需求生成自定义的应答文件,然后将生成的文件放到/var/ftp/pub目录中并将名字修改为ks.cfg即可。