一、数据库的介绍
1.数据库就是个高级的表格软件
2.常见数据库
Mysql Oracle mongodb db2 sqlite sqlserver .......
3.Mysql (SUN -----> Oracle)
4.mariadb 是数据库服务器
数据库中的常用名词
字段 :表格中的表头
表 :表格
库 :存放表格的目录
查询 :对表格中的指定内容进行查看
二、数据库的启用
1.mariadb的安装
systemctl enable --now mariadb ##数据库开启 在/var/lib/mysql 有其相关配置文件
2.软件基本信息
mariadb.service ##启动服务
3306 ##默认端口号
/etc/my.cnf.d/mariadb-server.cnf ##主配置文件
/var/lib/mysql ##数据目录,当需要重新安装mariadb时需要清理此目录或备份
三、数据库的基本管理
1.查看
mysql
SHOW DATABASES; ##显示库名称
SELECT * FROM mysql.user; ##查询所有数据
SELECT User,Password,Host FROM mysql.user; ##查询指定字段
USE mysql; ##进入mysql库
SHOW TABLES; ##显示库中的所有表
SELECT Host,Password FROM mysql.user WHERE User='root'; ##查看指定的Host ,Password其中用户字符为root
SELECT Host,Password FROM mysql.user WHERE Host='localhost' AND User='root';##查看指定的Host ,Password其中指定用户字符为root和localhost
netstat -antlupe | grep mysql 端口号为3306
2.数据库的安全初始化
(1)关闭数据库开放端口
vim /etc/my.cnf.d/mariadb-server.cnf 写入skip-networking=1 ##关闭网络连接,只监听本地客户端
查询不到端口
(2)执行安全初始化脚本
mysql ##默认不需要密码,初始化完毕后需要
mysql_secure_installation##执行安全初始化脚本,之后设定权限密码
mysql -u root -p root## -u 指定登陆用户 -p 密码
mysql -u root -pwestos(一般不用,密码被泄漏)
3.新建和删除
CREATE DATABASE westos; ##新建westos库
CREATE TABLE linux ( ##新建表
username varchar(6) not null, ##用户名的可变长度为6,不允许出现重复
password varchar(30) not null
);
DESC linux; ##显示表结构
INSERT INTO linux VALUES ('user1','123'),('user2','123'); #插入数据
FLUSH PRIVILEGES; #刷新数据库
##更改westos库名称为westoslinux(改完之后不能更改库里面的表) 必须得重启服务
为了更改库里面的表得重新改回来
ALTER TABLE linux RENAME userlist; ##表linux重命名为userlist
DESC userlist; ##显示表结构
ALTER TABLE userlist ADD address varchar(20);##在表userlist中添加address这一项
ALTER TABLE userlist ADD age varchar(4);##添加age 字符可变长度为4
ALTER TABLE userlist DROP age ##删除age
ALTER TABLE userlist ADD age varchar(4) AFTER username;##添加age在username后面
UPDATE userlist SET age='20'; ##设定表中age为20
UPDATE userlist SET age='25' WHERE username='user2';##设定表中用户user2的age为20
DELETE FROM userlist WHERE username='user1';##删除用户1
DROP TABLE userlist;##删除表
DROP DATABASE westos; ##删除库
4.数据库的备份
查看数据库的状态
systemctl status mariadb
建立实验素材
mysql -u root -p
SHOW DATABASES;
CREATE DATABASE westos;
CREATE TABLE westos.userlist(
-> username varchar(10) not null,
-> password varchar(20) not null
-> );
INSERT INTO westos.userlist VALUES ('user1','123'),('user2','123');
SELECT * FROM westos.userlist;
mysqldump -uroot -pwestos --all-database ##备份所有数据
mysqldump -uroot -p1westos --all-database --no-data ##只备份结构,无数据
mysqldump -u root -pwestos westos > /mnt/westos.sql##备份到mnt里面
5. 数据恢复
mysql -u root -pwestos -e "DROP DATABASE westos;" ##用户root登陆执行删除数据库westos
mysql -u root -pwestos -e "SHOW DATABASES;;"
mysql -u root -pwestos westos < /mnt/westos.sql ##直接从mnt恢复会报错,因为数据库westos已经不存在
方法一:
mysql -u root -pwestos -e "CREATE DATABASE westos;;" ##必须先创建一个库;
mysql -u root -pwestos westos < /mnt/westos.sql ##把/mnt里面的内容恢复过去
同时也会把库里面的表也恢复过来了
方法二:
vim /mnt/westos.sql写入CREATE DATABASE westos;
USE westos;
mysql -u root -pwestos < /mnt/westos.sql
6 .数据密码管理
(1)数据密码更改
mysqladmin -u root -pwestos password lee ##修改密码
mysql -uroot -plee ##登陆
(2)数据库密码破解
systemctl stop mariadb.service
mysqld_safe --skip-grant-tables & ##开启单元模式,跳过授权表
mysql
SELECT * FROM mysql.user;
UPDATE mysql.user SET authentication_string='westos' WHERE User='root';##当使用过mysladmin更改过密码 的用authentication_string
UPDATE mysql.user SET Password='westos' WHERE User='root';##当未使用过mysladmin更改过密码的用Password
显示的明文密码缺乏安全性
UPDATE mysql.user SET authentication_string=password('westos') WHERE User='root';
显示的密码为加密字符
flush privileges;
之后ps aux | grep mysql
kill -9 mysql的所有进程
systemctl restart mariadb 修改生效
7.授权管理
vim /etc/my.cnf.d/mariadb-server.cnf 修改skip-networking=0
重启服务;查看端口是否被占用 ;阻止火墙
mysql -u root -pwestos -e "CREATE USER lee@localhost identified by 'lee';" ##创建本地用户lee密码为lee 只能用localhost登陆
mysql -u root -pwestos -e "CREATE USER linux@'%' identified by 'lee';"##linux可以通过网络或localhost登陆
测试:
mysql -u linux -plee 可以登录
用其他主机登录时 mysql -ulinux -plee -h172.25.254.200 可以登录
用户lee登陆进去之后SHOW DATABASES; 看不了没有权限
mysql -uroot -pwestos -e "GRANT SELECT ON westos.* TO lee@localhost;" ##把westos库的所有的查询权限授权给用户lee
mysql -uroot -pwestos -e "SHOW GRANTS FOR lee@localhost;" ##查看授权
INSERT INTO westos.userlist VALUES('user3','123');##但是写入不了内容,没有权限
mysql -uroot -pwestos -e "GRANT DROP,INSERT ON westos.* TO lee@localhost;"##加入删除,写入的授权
mysql -uroot -pwestos -e "SHOW GRANTS FOR lee@localhost;" ##查看授权
mysql -uroot -pwestos -e "REVOKE DROP ON westos.* FROM lee@localhost;"##回收删除的权限
mysql -uroot -pwestos -e "DROP USER linux@'%';"##删除用户linux
8.phpmyadmin的安装
phpmyadmin是以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具;
netstat -antlupe | grep 80 ##先查看端口有没有被占用
dnf install httpd php php-mysqlnd -y
systemctl enable --now httpd ##如果报错可以查看journalctl -xe查看报错地址
tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 ##解压安装包
rm -fr phpMyAdmin-3.4.0-all-languages.tar.bz2##解压完之后删除安装包
mv phpMyAdmin-3.4.0-all-languages mysqladmin##名字改为mysqladmin
less README
less Documentation.txt 看到
cp config.sample.inc.php config.inc.php ##复制模板文件到config.inc.php
测试:浏览器中输入172.25.254.200/mysqladmin
root用户登录切换为中文
插入用户lee ,密码123
在shell 中可以看到表的内容