实验: 数据库安全性实验 一、实验目的 创建表和用户管理 创建表单是数据库中最基本的操作,也是使用比较频繁的操作,因此必须掌握SQL的(CREATE语句)的使用方法。而对于用户的管理操作更是一名合格的DBA所必须掌握的.本实验就要求掌握并熟悉这两项基本技能. 用户权限管理 为了保证数据库的安全性,每个DBMS都为系统针对于每一个用户设计了权限管理来保证数据安全.本实验就要求掌握对用户权限管理的的操作方法。 二、实验环境 MYSQL 三、实验前准备 (1)准备电脑,课本(数据库系统概论第五版) (2)了解创建表单和用户管理的命令 (3)了解操作用户权限的命令 四、实验内容与步骤 创建表和用户管理 (1)登录MYSQL数据库,创建三个表 ① 在数据库Tattoo中创建三个表,分别是学生表Student、课程表Course、学生选课表SC,约束以及属性如课本79页。 1. SQL语句 drop database if exists Tattoo ; create database Tatto 继续阅读 >>


刘生玺 18/12/29 11:54:02
个人配置说明:5.7.24 MySQL Community Server (GPL),环境CentOS 7 1.MYSQL 不支持语句触发(for each statement),只支持行触发(for each row,新旧数据通过关键字new和old区别) 实验: 数据库存储和触发器实验 一、实验目的 理解,实现并逐渐熟悉存储过程的使用 存储过程(Stored Procedure)是指一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。使用它的目的主要是它不用像SQL语句一样解释执行,而是相当于二进制文件直接运行即可,提高了效率. 掌握触发器的定义和使用 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。这在实际使用过程中非常实用.作为一名合格的数据库管理人员,是必须要掌握的.这节实验的目的也在于此. 二、实验环境 MYSQL 三、实验前准备 (1)准备电脑,课本(数据 继续阅读 >>


刘生玺 18/12/29 11:47:19
文章目录前言一、创建DESUtil工具类二、创建EncryptPropertyPlaceholderConfigurer类三、修改spring-dao.xml的相关配置 前言 我们常常在写数据库配置文件jdbc.properties的时候,都是以明文方式来显示,这样做其实是很不安全的,万一被黑客爬取到这些信息连接上数据库,造成数据泄露是很危险的。所以,我们想到对明文进行加密,使用密文来显示是个不错的方法~ 加密一般分为可逆加密和不可逆加密,其中可逆加密一般又分为对称加密和非对称加密,对称加密是使用了同样的密钥进行加密解密,而非对称加密则是使用公钥加密之后必须使用私钥来解密。不可逆加密之后是无法解密的。DES加密就是一种对称加密。 现阶段先不研究加密算法,主要看看在Java中如何使用DES进行加密和解密的~ 一、创建DESUtil工具类 package com.yaya.o2o.util.jdbcpwddes; import sun.misc.BASE64Decoder; import sun.misc 继续阅读 >>


贺含悦 18/12/20 19:29:28
C语言链接mysql数据库错误: 一 编译错误: eg:用gcc编译出现如下的错误: test.c:(.text+0x5e):对‘mysql_init’未定义的引用 但是在头文件中已经#include<mysql/mysql.h> 解决方法是: gcc xx.c -lmysqlclient -L/usr/lib64/mysql 二 由~mysql-config –libs –cflags~衍生的学习 出现 undefined reference to ‘xxxxx’错误,是因为源码没有什么问题,而是编译链接错误;也就是编译参数没有指定程序要用到的库文件。 比如上边连接mysql程序include 了 h 文件,但编译的时候没有指明这个库文件libmysqlclient.so 。 -l和-L 参数(gcc) -l参数是指定库文件名 如 -lxx 那么xx真正的库文件名是libxx.so。如 mysql的库文件名是 libm 继续阅读 >>


李重乐 18/08/15 10:30:07
模式与数据库、数据库中的表的关系: 1个数据库下,可以有多个模式。 1个模式下,可以有0个或多个表 。   首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,?   我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table就被放入每个房间中,不能放置在房间之外。然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样。所以Schema包含的是Object,而不是User。   User是每个对应数据库的主人,既然有操作数据库的权利,就肯定有操作数据库中每个Schema(房间)的权利。换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的,他有完全的操作权,。我们还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only) 继续阅读 >>


李东林 18/01/02 20:55:18
什么是主键、外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以学号和课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键。 同理:成绩表中的课程号是课程表的外键。 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 继续阅读 >>


董恒毅 17/11/18 20:24:39
什么是索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 假设我们创建了一个名为people的表: CREATE TABLE people (peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL); 然后,我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分(在数据文件中name列没有任何明确的次序): 如果我们创建了name列的索引,MySQL将在索引中排序name列: 对于索引中的每一项,MySQL在内部为它保存一个数据文件中实际记录 继续阅读 >>


董恒毅 17/11/16 16:44:37
0x01 前言 用过Django的小伙伴都知道,Django的ORM是自带的,比较特殊,而且集成了很多功能,比如数据库迁移… 何为ORM,个人之见解,简化sql语句的书写,将关系型数据库的一张张表转化为了python的类,最大的好处是简化了学习成本,不会sql语句的程序员也能平滑的使用数据库,并且天生防sql注入。flask可以使用SQLAlchemy,包名为flask-sqlalchemy.至于具体用法翻译的官方文档讲的也足够清楚。大家直接谷歌跟着文档就能搞定,本篇主要讲如何进行数据库迁移。 flask的小工具 大家从Django转至Flask最明显的一个差异就是,flask直接运行就可以启动服务,Django是使用了runserver来进行运行。至于好坏大家自行斟酌。这里提一个插件。flask-script。pip安装即可。 from flask_script import Manager ...... manager = Manager(app) ...... #app.run() 继续阅读 >>


李余通 17/09/24 20:05:11
第一步:啥叫句柄,就是一个数字,就和你去饭店吃饭要排队,前台小姐给你分配了一个编号一样,然后她可以通过编号找到你。而在操作系统或者某种其他编程系统中,句柄就是这样的一个编号,用来对各种奇奇怪怪的东西编号,系统对你来说是一个黑箱,你只能通过这个编号向系统要东西 第二步:C语言操作mysql数据库常用函数 所用到的头文件: mysql/mysql.h 功能: 获得或初始化一个MYSQL句柄 函数原型: MYSQL *mysql_init(MYSQL *mysql) 函数返回值: 一个被始化的MYSQL*句柄 备注: 在内存不足的情况下,返回NULL 函数功能: 连接一个MySQL服务器(在连接之前,必须先进行过初始化) 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql,const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsi 继续阅读 >>


刘生玺 17/09/09 14:31:18
第一部分c语言操作数据库 1、连接 MYSQL *mysql mysql=mysql_init(NULL);//初始化一下 mysql_real_connect(mysql,HOST,USER,PASSWD,TESTDB,0,NULL,0) ①HOST是主机名 ②user是ID ③passwd是密码 ④TESTDB是数据库的名称 2、信息错误处理 mysql_error(mysql) 3、对数据库进行操作(具体字符串在第二部分) mysql_real_query(mysql,query,strlen(query)) query是字符串 int result=mysql_affected_rows(mysql)//获取受到影响的行 如果返回值为0,结果就是没有受到影响,数据库中没有想获取的数据 4、储存数据结果和释放空间 MYSQL_RES res=mysql_store_result(mysql) mysql_free_result(res)//必须执行才可以进行后续的操作,不然会出错 5、获取行和列 mysql_f 继续阅读 >>


陈文浩 17/09/03 22:10:58