数据库理论及增删改查
常见数据库默认端口:
1、Mysql和MariaDB(关系型数据库:3306)
2、PostgreSQL(强大的开源关系型数据库,其默认端口号是5432)
3、MongoDB(文档数据库,非常适合非关系型数据。其默认端口号是27017)
4、SQLite(嵌入式数据库引擎,它并不像其他数据库那样运行在特定的端口上。相反,SQLite数据库文件通常在设备或应用程序中直接访问。)
5、Oracle Database(企业级关系型数据库,其默认端口号根据版本和安装配置可能会有所不同。一般来说,Oracle的默认监听端口是1521,但可能需要根据具体情况进行更改。)
6、Microsoft SQL Server(微软开发的关系型数据库系统,其默认端口号也是动态的,通常由安装配置指定。在默认情况下,SQL Server使用动态端口1433进行监听。)
关系型数据库和非关系型数据库的区别:
关系型数据库:1.数据存储结构:二维表结构 2.查询能力:支持复杂查询 3.数据一致性:强一致性ACID使得对于安全性
非关系型数据库:
安装数据库:(模拟的真机实在没网的情况下使用rpm安装方式,有网的情况下可以使用yum的方式)
1、卸载maridb
·般情况下centos 完全安装,则会自带mariac交装 mysql需要先卸载mariadb
rpm -qa | grep mariadb :查询是否安装了mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.e17_5.x86_64:卸载 mariadb
2、按顺序安装4个包(因为有依赖)
rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm
3、数据初始化及修改密码
mysqld --initialize --user=mysql (- -user=可以新起一个名称)
grep password /var/log/mysqld.log (获取初始化密码,需要尽快使用,它只有360s时间)
systemctl start mysqld (启动mysql)
mysql -u xxx -p(进入mysql)
Alter user user() identified by 'password'; (修改密码)
show databases; (查看数据库)
修改密码2:在终端即可修改:mysqladmin -u xxx -p password (按照提示输入旧的密码新的密码即可)
注:mysql的配置文件在:/etc/my.cnf
datadir=/var/lib/mysql # 数据存放的位置
netstat -ano | grep 3306 # 查看数据库进程,是否启动
systemctl status mysqld # 判断数据库是否启动
mysql远程连接
判断是否安装了mysql数据库:
rpm -qa | grep mysql # 查看安装的数据库
ps -ef | grep mysqld / ps aux | grep mysqld pidof mysqld # 查看mysql的进程
select user,host from user; (%表示在任何地方都可以登录)
更改权限:update user set host='localhost' where user='root'; (将host权限更改为localhost。localhost可以更改成为IP)
赋予权限:grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
(grant all privileges on是user:root host:%赋予所有权限,*.*对于所有库所有表。identified by密码123456。grant option允许赋予别人权限的能力)
权限刷新:fulsh privileges
防火墙放行3306端口才能远程连接:firewall-cmd --llist-all 查看规则,firewall-cmd --zone=public --add-port=3306/tcp.但是只要我们service firewalld restart重启防火墙,规则将刷新,需要加 --permanent永久打开。可以关闭防火墙systemctl disable firewalld 但是不安全的
注:在不显示IP的情况下,我们可以cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33 #编辑一下网卡设置
将ONBOOT修改为yes

service network restart 重启一下网卡
1、数据库状态

2、mysql中常用的命令
看mysql版本号:Mysql中,select version() from dual;
看数据库:show datebases;
使用数据库:use mysql

3、获得mysql元数据命令

show variables like 'port' # 看配置文件中的文件变量的值
show variables like '%secur%'
4、快捷命令


select * from mysql.user where user='root' \G; # 格式化显示内容
5、mysqladmin常用命令

mysqladmin -uroot -p123456 variables | grep port # 正则表达grep筛选
1、Mysql中用户是如何定义的
例:user@10.0.0.51
creat use

dbo1(域名)
2、Mysql权限级别介绍

procs_priv 进程的权限
3、用户查看





(3)查看用户权限赋予情况
show grants for root@'%'
4、用户创建
creat user test1@'%' indentified ny 'password';
creat user test2@'localhost' indentified by 'paaaword';
creat user test2@'IP' indentified by 'paaaword';
creat user test2@'DNS域名' indentified by 'paaaword';
查看指定用户的权限:select * from mysql.user where user='test1' \G;
5、用户删除
drop user username;
username:是要删除的用户名字
如:drop user test@‘%’
drop user ‘’@‘127.0.0.1’ 用户为空的删除
6、用户授权
(1)赋权语句
grant all privileges on databasesname.tablesname to 'username'@'host' with grant option identified by 'password'
例如:grant all privileges on *.* to 'test1'@'%' identified by '123456' with grant options;

(2) 部分赋权举例
单库赋权:
creat database test1;
use test1;
creat table aaa(cmd text)
creat table bbb(cmd text)
grant all privileges on test1.* to 'test1'@'%' identified by '123' with grant option;
单表赋权:
grant all privileges on test1.aaa to 'test1'@'%' identified by '123' with grant option;
字段赋权:
MySQL单列级别的授权,这样做的话,我们是连表都是打不开的,只能通过查询语句,查对我们开放的字段:
grant select(user) on mysql.user to 'test3'@'%' identified by '123';
select @ from tables_priv;
select user();
7、收回用户的权限
revoke 【权限】ON 【库,表】 FROM 【用户名】@【主机】;
-- 查看用户
select user,host from user

Mysql数据库读取外部文件方法(渗透测试专用)
mysql数据库在渗透过程中能够使用的功能还是比较多的,除了读取数据库数据之外,还可以进行对数据库外部文件进行读写(但前提是权限足够)
mysql在不同版本读取文件方法大致有这3个:
1.load_file()
2.load data infile()
3.system cat
load_file和load data infile 读取文件的方法为:新建一个表,读取文件为字符串形式插入表中,然后读出表中数据。
但是通常情况下有两个前提:
1.在拥有file权限的前提下
2. secure_file_priv 不为NULL
secure_file_priv 的值课在这里查看:
show variables like '%secur%';(下图显示的为只能读取/var/lib/mysql-files/的文件)

二、读取文件前提实现
可以通过一下方式修改:
修改mysql.cnf 文件,
在[mysqld] 下添加条目:secure_file_priv=
在[mysqld] 下添加 local-infile=1 选项
在[mysql] 下也添加 local-infile=1
echo ‘123’>1.txt


保存之后,关闭selinix:setenforce 0
注:设置完成之后重启:service restart mysqld.service
三、load_file()方式读取文件实现

insert into 插入 aaa(cmd) 表 values(值)

四、load data infile 方式实现文件读取

提前创建一个bbb的表:creat table bbb(cmd text);

五、system命令的方式读取文件

数据库理论:

2、范式理论





二、创建数据库

查看环境变量是否符合情况 :show variables like '%lower%';



creat databases if not exists ddd # 如何不存在ddd数据库则会创建数据库,如果存在就会不创建

-- 创建学生信息表
‘sid’学号
UNSIGNED(无符号,因为学号是没有负数的)
PRIMARY key(设置为主键)
auto_increment(自增,在前面的整形的情况下自动增1....)
'sname' 姓名
varchar(20) (可变的字符串)
'age' int (不指定长度,使用默认的长度)
'sex' (性别)
使用枚举 enum('m','f')


-- 创建课程表
UNSIGNED(无符号,因为学号是没有负数的) unsigned
PRIMARY key(设置为主键) primary key
auto_increment(自增,在前面的整形的情况下自动增1....)

-- 创建成绩表
UNSIGNED(无符号,因为学号是没有负数的) unsigned
PRIMARY key(设置为主键) primary key
PRIMARY key(sid,cid) # 定义两个字段sid,cid为外键
/* 外键是出现在其他表里的主键扮演的 */
FOREIGN KEY(sid) # 外键 foreign key
REFERENCES # 哪个主键的名字
DELETE CASCADE on UPDATE CASCADE # 根据主键删除而删除,更新而更新
ENGINE=INNODB DEFAULT CHARSET=utf8 #设置数据库默认规则


删除表:
删除表遵从先删除外键表

-- 查看表结构

-- 增加一个字段
comment (备注)

-- 删除一个字段

-- 修改字段名

-- 修改字段属性
modify

-- 增加记录(stuinfo学生信息)
insert into (增加)

birth
-- 增加课程信息(course课程信息)
mysql可以默认自增 sqlserver则不可以


-- 增加成绩信息(score成绩信息)
(1,1,100) #第1个学生,选第1门课程,成绩为100

-- 删除一个学生
伴随的成绩等信息都会被删除

-- 删除一个表
/*删除的是表内的信息*/
删除表名:drop table tablename

再次增加信息时注意 sid值。

-- 修改记录(学生记录)
update stuinfo 修改stuinfo表的信息

-- 查询所有姓名为‘张’开头的信息

-- 查询年龄为20以上的学生信息

-- 查询家住在上海或者北京的学生信息


-- 查询邮箱为空的信息

3、 union查询

-- union 查询
先自建一个表

插入数据

再建一个表

temp2插入值

-- union联和查询 (显示的是temp1表的列)
select *from templ union select 1,2; (1,2需和列数相同的两个字段数)
2、分组查询

sid (学号)
cid (课程号)
desc (降序排序)
cj (成绩)
SEPARATOR(用什么方法分割)
GROUP BY sid (使用sid分组)

3、字符串函数 (可用于盲注)

-- 字符串函数

4、Mysql数据库导入导出 (因为安全问题,该功能官网已经封闭)

需要“secure_file_priv” 需要时开启的条件 (secure_file_priv这个权限很重要)
into outfile #导出文件
load data local infile #导入文件
5、导出、出表、出库、导入

-- “<” 导入

-- source 导入


浙公网安备 33010602011771号