
本文共 3922 字,大约阅读时间需要 13 分钟。
mysql安全管理(学习框架)
安全管理是用各种方式来确保数据库的安全和数据的安全
一、外键约束
1、外键:foreign key,表中指向外部表主键的字段定义成外键
外键必须通过语法指定才能称之为外键
[constraint 外键名] foreign key(当前表字段名) references 外部表(主键字段)
外键构成条件
外键字段必须与对应的主键字段类型一致
外键字段本身要求是一个索引
2、外键约束:当表建立外键关系后,外键对主表(外键指向的表)和子表(外键所在的表)里的数据产生约束效果
外键约束的是写操作(默认操作)
新增:子表插入的数据对应的外键必须在主表存在
修改:主表的记录如果在子表存在,那么主表的主键不能修改(主键不能修改)
删除:主表的记录如果在子表存在,那么主表的主键不能删除
外键约束控制:外键可以在指定时控制外键的约束作用
控制类型
on update:父表更新时子表的表现
on delete:父表删除时子表的表现
控制方式
cascade:级联操作,父表操作后子表跟随操作
set null:置空操作,父表操作后,子表关联的外键字段置空
restrict:严格模式,不允许父表操作(默认的)
no action:子表不管
二、事物安全
1、事物:要做的事情
计算机中的事物指某个程序执行单元(写操作)
事物安全:当事物执行后,保障事物的执行是有效的,而不会导致数据错乱
事物安全通常针对的是一连串操作(多个事物)而产生统一的结果
2、事物处理
3、事物特点:原子性、一致性、隔离性、持久性
三、预处理
1、预处理:一种预先编译sql指令的方式
2、预处理传参
四、视图
1、视图:一种由select指令组成的虚拟表
2、视图管理
3、视图数据操作
4、视图算法
五、数据备份与还原
1、表数据备份:单独针对表里的数据部分进行备份(数据导出)
将数据从表中查出,按照一定的格式存储到外部文件
字段格式化:fields
terminated by:字段数据结束后使用的字符,默认是空格
enclosed by:字段数据包裹,默认什么都没有
escaped by:特殊字符的处理,默认是转移
行格式化:lines
terminated by:行结束符号,默认是\n,自动换行
starting by:行开始符号,默认没有
select 字段列表|* into outfile 外部文件路径 [fields terminated by 格式 enclosed by 格式] [lines terminated by 格式 starting by 格式]from 数据表;
表数据备份不限定数据的来源是一张表还是多张表(可以连表)
2、表数据还原:将符合数据表结构的数据导入到数据表中(数据导入)
将一定格式的数据按照一定的解析方式解析成符合表字段格式的数据导入到数据表
字段处理
行处理
load data infile '数据文件所在路径' into table 表名 [fields terminated by 格式 enclosed by 格式] [lines terminated by 格式 starting by 格式] [(字段列表)];
3、文件备份
4、文件还原
5、sql备份
6、sql还原
六、用户管理
1、账号管理:根据项目的需求设置和管理账号
2、权限管理:对账号进行权限的支持和回收
3、角色管理:根据角色来分配权限,然后用户只需要关联角色即可(分配角色)
表单传值
1、表单传值:通过html表单,实现数据在浏览器录入,并传递给后端语言
表单传值是一种数据的传递方式
表单传值有多种,常见的是GET和POST传值
表单传值需要用到的表单元素
form表单:用来包裹多个表单元素一并提交
input表单元素
text:文本数据
password:密文数据
textarea:长文本数据
hidden:隐藏数据
submit:提交按钮
下拉框表单:select
按钮选择
radio:单选框
checkbox:多选框
url传值:a标签:直接在请求连接后使用?+数据
示例1、url传值<html> <body> <a href="login.php?username=xxx">登录</a> </body></html>2、表单传值<html><body> <form action="提交对象" method="GET/POST"> 用户名<input type="text" name="username"> 密码<input type="password" name="password"> <input type="submit" value="登录"> </form></body></html>
2、post传值:通过form表单使用post方式,将数据从浏览器以肉眼不可见形式传输给浏览器
post传值必须使用form表单
要提交的表单元素本身必须拥有name属性
示例1、提交用户登录信息:用户名和密码信息,提交诶login.php处理<html><body> <form action="login.php" method="post"> 用户名<input type="text" name="username"> 密码<input type="password" name="password"> <input type="submit" name="submit"value="登录"> </form></body></html>
3、get传值:将浏览器的数据以肉眼可见的形式提交给服务器
get传值可以通过form表单实现也可以通过url直接实现
get传值的数据可以在浏览器地址栏看到
示例使用form表单提交检索数据<html><body> <form action="check.php" action="get"> 商品名字<input type="text" name="goods_name"> 商品颜色<select name="goods_color"> <option value=1>red</option> <option value=2>green</option> <option value="3">blue</option> </select> <input type="submit" name="查询"> </form></body></html>
4、php接收表单数据:php将用户通过表单传递的数据变成php可识别的数据和可操作的方式
php接受数据是系统行为,自动接受
php接收数据有三种方式,每一种方式都是表单元素name属性的值作为数组元素下标,具体数据作为数组元素的值
$_GET:接受浏览器GET方式传递的数据
$_POST:接收浏览器POST方式传递的数据
$_REQUEST:接收浏览器GET和POST提交的数据
示例1、接受用户登录提交的信息:login.php用户是post提交,所以应该使用$_POST或者$_REQUEST接受var_dump($_GET,$_POST,$_REQUEST);取出数据加工$username=$_POST['username'];$password=$_POST['password'];2、接受用户的删除信息:delete.php$id=$_GET['id'];安全接受方式$id=isset($_GET['id']) ? intval($_GET['id']) : 0;isset判定是为了让脚本在没有真正接受到数据时不会报错,从而不友好intval是因为id通常是逻辑的,需要加工成整型,这样可以防止外部进行sql攻击默认值0是为了方便后续进行判定,因为逻辑主键不会存在0的
php操作
1、mysql_connect(server,user,pwd,newlink,clientflag) 函数打开非持久的 MySQL 连接。
server:要链接的服务器
user:用户名
pwd:密码
newlink:是否在已经连接的基础上建立一个新的连接
clientflag:其他的一些参数
如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE。
脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用 mysql_close() 关闭了。
2、mysql_pconnect() 相对于mysql_connect(),是创建一个持久连接
3、mysql_select_db(database,connection) 函数设置活动的 MySQL 数据库。
如果成功,则该函数返回 true。如果失败,则返回 false。
4、mysql_query(query,connection) 函数执行一条 MySQL 查询。
query必需。规定要发送的 SQL 查询。查询字符串不应以分号结束。
5、mysql_fetch_array(data,array_type) 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有
返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。
data:可选。规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果
array_type :可选。规定返回哪种结果。
6、die() 函数打印括号内消息,并退出当前脚本
发表评论
最新留言
关于作者
