目录
2、安装所需插件(httpd、php、php-mysqlnd)并启动服务
一、数据库的介绍
注意:本章所用到的<mysql>和<mariadb>是一种东西,只是叫法不一样。
1、什么时数据库?
答:数据库就是一个高级的表格软件
2、数据库中的常用名词
字段 | 表格中的表头 |
表 | 表格 |
库 | 存放表格的目录 |
查询 | 对表格中的指定内容进行查看 |
二、mariadb的安装
dnf install mariadb-server.x86_64 -y #安装mariadb数据库
三、软件基本信息
mariadb.service | 启动服务 |
3306 | 默认端口号 |
/etc/my.cnf.d/mariadb-server.cnf | 主配置文件 |
/var/lib/mysql | 数据目录,当重新安装mariadb时需要清理此目录或备份 |
四、数据库开启
systemctl enable --now mariadb #开机自启动mariadb服务
五、数据库的安全初始化
1、关闭数据库开放端口
数据库默认开启了一个3306的端口,有安全隐患,所以应该先关闭此端口。
第一步:查看mysql服务的默认端口
第二步:关闭3306端口
进入mysql数据库的主配置文件,在第21行添加一个<skip-networking=1>,意思就是跳过网络访问。
vim /etc/my.cnf.d/mariadb-server.cnf #编辑mysql的配置文件
第三步:重启mariadb服务后再次查看
使用<netstat -antlupe | grep mysql>命令再次查看服务的端口信息,端口已经关闭,查不到了。
2、执行安全初始化命令
数据库默认没有密码,这对数据库造成很大的安全隐患,所以要对mysql数据库进行安全初始化,设置一个密码以增加安全性,
mysql_secure_installation #mysql安全初始化命令
3、测试
mysql -u root -p # -u 指定登陆用户 -p 密码
安全初始化完成后,无法通过之前的直接输入“mysql”命令进入数据库了,必须得指定用户然后输入密码才可以。
六、 数据库的基本管理——增删查改
1、数据库的基本结构——库,表,列
2、查看
show databases; #显示库名称
use mysql; #进入mysql库
show tables; #显示库中的所有表
select * from user; #查询user表中的所有数据
select host,user from user; #查询指定字段(host,user字段)
select host from mysql.user where user='root'
#查询指定表(绝对路径)中的root下的host字段
查看库、进入库、查看表,结果如下图:
查询指定字段、按绝对路径查询指定字段、查询所有字段,结果如下图:
3、新建
create database zzh; #新建库
create table linux ( #新建表(数据库中步是以分号结尾的都可以换行)
username varchar(6) not null,
password varchar(30) not null
);
desc linux #显示表结构
insert into linux values ('user1','123'),('user1','123') #插入数据
flush privileges; #刷新数据库
新建库、新建表、查看表结构
插入数据、刷新数据库
4、更改
alter table linux rename redhat; #更改表名linux为redhat
原表名 新表名
alter table redhat add age varchar(4); #添加列(默认添加到表的最后)
alter table redhat add age varchar(4) after password;
#添加列(指定位置添加到password列的后边)
alter table redhat drop password; #删除列
update redhat set age='18'; #更改表中age字段的值为18
update redhat set age='18' where username='user2';
#更改表中age字段指定位置的值为18
更改表名、增加列
删除列
更改表中元素:如果不加限制条件的话,会导致把age字段对应的所有数据全部改变;
加上限制条件后,会只改变对应位置的元素;
5、删除
delete from redhat where username='user1' and age='18';
#删除中user1和age=18所对应的列
drop table redhat; #删除表
drop database zzh; #删除库
删除列
删除表、删除库
七、数据密码管理
1、数据库密码更改
mysqladmin -uroot -pwestos passwd lee #更改数据库密码
原密码 新密码
更改密码效果如下图所示:
2、数据库密码破解
注意:破解的密码不能用明文,否则会导致密码破解失败
第一步:关闭mariadb服务
systemctl stop mariadb #关闭数据库服务
第二步:进入<mysql>的安全模式更改密码
mysqld_safe --skip-grant-tables & #启动mysql安全模式
#未使用过mysqladmin更改过密码
update mysql.user set password=password('zzh') where user='root';
#使用过mysqladmin更改过密码
update mysql.user set authentication_string=password('zzh') where user='root';
启动mysql的安全模式后,就可以直接进入mysql而不用输入密码了
第三步:更新数据库
flush privileges; #更新数据库
第四步:关闭mysql所有进程
ps aux | grep mysql; #查询所有进程并过滤出mysql进程
kill -9 mysql的进程号 #强制关闭mysql进程
第五步:开启mariadb服务
systemctl start mariadb #开启数据库服务
修改密码完成后,可以看到已经不能直接通过无密码登录了,只能通过修改后的密码登录数据库。
八、用户授权
第一步:进入mysql数据库
mysql -uroot -pzzh #进入mysql数据库
第二步:创建特定用户(在mysql下执行)
select user,host from mysql.user; #查看可用用户信息
create user lee@localhost identified by 'lee'; #创建lee用户且只能用localhost登录
create user zzh@'%' identified by 'lee'; #创建zzh用户且本地或远程都可登录
用户形式 密码
在mysql下创建本地用户lee和远程用户zzh,创建完成后可以查看表中的用户数据新增了这两个。
第三步:对特定用户授权(在mysql下执行)
grant insert,select,drop on mysql.* to lee@localhost #对本地用户授予权限
grant insert on mysql.* to lee@localhost #对远程用户授予权限
默认情况下,这些特定用户没有任何权限,所以进入mysql后查不到任何东西。
在root用户下对这些特定用户授权后,特定用户才可以看到。
对用户追加授权的话重新执行上述命令即可
第四步:查看授权状态(在mysql下执行)
show grants for lee@localhost; #查看授权
第五步:测试——本地用户和远程用户
注意:由于在前边实验中关闭了远程用户访问的端口,所以这里需要在配置文件中更改回去,允许远程用户通过网络端口访问数据库。完成后重启mariadb服务。
使用本地用户登录:登录数据库后可以看到被授权‘‘查看、新增、删除‘‘的mysql数据库。
用远程用户登录:因为没有被授权任何数据库,所以看不到任何东西。
第六步:回收授权
revoke select on westos.* from lee@localhost; #取消本地用户的insert权限
对本地用户lee取消对数据库“mysql”的select授权后,再次查看授权,已经没有select权限了。
第七步:删除特定用户
drop user lee@localhost: #删除本地用户
执行删除本地用户lee命令后,再次查看用户信息,已经没有用户lee了。
九、数据库的备份
1、备份
mysqldump -u root -pwestos --all-database #备份所有数据
mysqldump -u root -pwestos --all-database > /mnt/all.sql #备份所有数据并保存到指定文件
mysqldump -u root -pwestos --all-database --no-data #备份所有库结构但不保存数据
mysqldump -u root -pwestos linux #只备份linux库的内容
mysqldump -u root -pwestos linux > /mnt/linux.sql #只备份linux库的内容并保存在指定文件
使用<mysqldump>命令可以备份数据并保存到指定位置。
2、恢复
方法一:
先在mysql数据库中建立要恢复的库,再从备份文件中导入该库的备份
mysql -u root -pzzh -e "create database westos;" #先创建库
mysql -u root -pzzh westos < /mnt/westos.sql #从备份中恢复指定库
直接从备份中恢复指定库的时候,必须保证mysql数据库中有要恢复的库名,否则无法恢复;因此需要先在数据库中创建相应的库名,然后再从备份中恢复。
方法二:
在备份文件中添加两行后,可以直接定向导入
vim /mnt/westos.sql #编辑数据库备份文件
在备份文件的第21加入<create database westos;>,第22行加入<use westos;>,保存后退出。
mysql -u root -pzzh < /mnt/westos.sql #从备份中恢复备份的库
测试结果如下:
十、phpmyadmin的安装
注意:本实验所用到的phpmyadmin网页编辑器由于版本不匹配的问题,此软件从老师的服务器中直接拿到相匹配的版本。
1、什么是phpmyadmin?
答:phpmyadmin是一种基于web的网页管理mysql数据库的软件,相比于shell命令行,web界面操作可以更方便和直观地管理数据。
2、安装所需插件(httpd、php、php-mysqlnd)并启动服务
dnf install httpd php php-mysqlnd -y #安装这三个服务
systemctl enable --now httpd #启动httpd服务
3、关闭火墙
systemctl disable --now firewalld.service #关闭火墙
4、设置phpmyadmin软件包
第一步:下载并解压软件包
由于需要在web页面访问,所以把这个软件包放在</var/www/html>目录下,以通过浏览器访问
解压后为了方便查看,将其解压后的目录改个简单的名字<mysql_tool>。
第二步:进入<mysql_tool>目录下更改配置文件
先查看帮助文件<vim README>
再查看说明<vim Documentation.txt>
然后按照帮助说明中的内容执行操作:
最后把上一步中得到的这串字符复制到配置文件下。
第三步:重启httpd服务
第四步:测试
在任何一台名通过http访问此数据库的客户机的浏览器里,都可以对数据库进行操作。
输入数据库的用户名和密码后登录效果如下所示:
十一、本章总结
1、破解的密码不能用明文,否则会导致密码破解失败
2、两种恢复数据库备份的方式中,第一种需要先创建相应的库名,才能往该库里导入备份数据;第二种不需要创建库名,但需要在备份文件中加入两条命令。区别是导入时第一种方法需要指定库名,第二种方法不用指定库名(指定库名后会报错)。
下图为第二种方法需要避免的坑: