• 网络安全关于数据库的一切


    1.什么是数据库

        数据库(英文Database) 是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储和管理数据的仓库,我们可以通过数据库提供的多种方法来管理数据库中的数据。

        数据库指的是以一定方式存储在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。

    1.1.数据库的基本概念

    数据库(DB):长期存储、有组织的、可共享的数据集合。

    数据库技术:能科学的组织和存储数据,高效地获取和处理数据的技术。

    数据库管理系统(DBMS),DataBase Management System,是统一管理数据库的软件,负责数据库的建立、操作和管理以及维护的软件系统。

    数据库管理人员(DBA):对数据库进行建立、调整、维护、改善。

    数据库系统(DBS):由计算机系统、数据库、数据库管理系统、应用程序和数据库管理员(DBA)组成。

    1.2.常见数据库

     

    1.3.目前国内主要有三大数据库厂商

    神州通用

    武汉达梦

    人大金仓

    2.数据库主要功能

        数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。

     

    SQL语言

     

    SQL语言(Structured Query Language)包含4个部分:

    数据查询语言DQL-Data Query Language

    数据操纵语言DML-Data Manipulation Language

    数据定义语言DDL-Data Definition Language

    数据控制语言DCL-Data Control Language

     

    DQL(Data Query Language):数据查询语言。

    后续细讲
     

    DML(data manipulation language):数据库操纵语言。

    包括如下的SQL语句:增删改查

    insert :添加数据到数据库中

    update : 修改数据库中的数据

    delete : 删除数据库中的数据

    select:查询数据库中的数据

     

    DDL(data definition language):数据库定义语言,比如创建、修改或删除数据库对象。

    create table : 创建数据库表

    alter table :更改表结构、添加、删除、修改列长度

    drop table :删除表

    create index : 在表上创建索引

    drop index :删除索引

     

    DCL(data control language):数据库控制语言。

    包括如下SQL语句:

    grant : 授予访问权限

    revoke :撤销访问权限

    commit : 提交事务处理

    rollback : 事务处理回退

     

    3.数据库常见类型及区别

        早期比较流行的数据库模型有三种,分别是层次式数据库、网络式数据库和关系型数据库。在当前的互联网中,最常用的数据库模型主要是有两种,及关系型数据库和非关系型数据库。

    3.1.关系数据库

        关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

        标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。

        简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。

    3.2.非关系型数据库

        非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Olnly SQL”(不仅仅是SQL),指的是非关系型数据库,而不是No SQL”的意思。

        NoSQL是对不同于传统的关系数据库的数据库管理系统的统称,泛指非关系型的数据库。

        NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

    3.3.两者优缺点

    4.数据库可能存在的风险

        网络的延伸伴随着计算机应用的范围不断扩大,人们熟识了各类别数据库配有的操作流程。但是,网络框架下的数据,往往会存留着被窃取、被黑客所毁损等弊病。为缩减数据被窃的机率,就应提升数据库的安全性,构建出防控必备的微机体系。

        数据库系统作为计算机信息系统的重要组成部分,数据库文件作为信息的聚集体,担负着存储和管理数据信息的任务,其安全性将是信息安全的重中之重。

    4.1.数据库在WEB中的风险

    弱密码&默认密码

        弱密码(Weak passwords)即容易破译的密码,多为简单的数字组合、帐号相同的数字组合、键盘上的临近键或常见姓名,例如“123456”、“abc123”、“Michael”等。终端设备出厂配置的通用密码等都属于弱密码范畴。数据库一般在刚开始安装时都会使用的默认密码,这时候就需要数据库管理人员在以后的维护过程中将默认密码修改为符合安全规范的密码,而往往有数据库管理人员因为一些原因并没有修改默认密码,导致黑客可以轻而易举的通过默认密码登录数据库。

    暴力破解

        密码被黑客通过其他方式获取的信息生成字典通过暴力破解穷举出。

    撞库

        通过已收集到的在其他服务中注册的用户名和密码,对目标数据库进行访问尝试。由于很多人习惯用相同密码和账号,因此成功登陆到目标数据库的可能性大大提高,达成盗取大量敏感信息的目的。

    SQL注入 

        SQL注入攻击是黑客对数据库进行攻击的常用手段之一。

        SQL注入的攻击原理就是攻击者通过Web应用程序利用SQL语句或字符串将非法的数据插入到服务器端数据库中,获取数据库的管理用户权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。

        SQL注入能够通过构建恶意的SQL语句来实现攻击者想要达到的目的,而并不是按照开发者的意图去执行SQL语句。

    通过已知漏洞

        这往往是由于数据库管理人员,没有及时对于数据库进行更新,或者并没有安装最新的安全补丁,导致的。

        在黑客检测到数据库版本之后,会针对性的对该版本曝出的已知漏洞进行攻击。

        所以防范该攻击最有效的手段就是及时的更新数据库软件,并打最新的补丁。

    4.2.DBA使数据库面临的风险

    人为误操作

    数据库管理人员误操作,导致删除数据、更改数据。

    过于相信用户输入方法

    当开发人员过于相信用户输入时,往往就会出现SQL注入漏洞。如果不对其进行验证,开发者就有可能允许黑客对数据库进行终端访问。

    数据库错误消息显示给终端用户

    在应用程序的SQL查询出现问题时,攻击者利用弹出的特定的错误消息,了解数据库的组织结构个应用程序查询等许多重要的信息,从而展开攻击。

    将调试代码留放到生产环境中

    开发人员忘记在生产环境中清除调试代码,造成打开后门的情况。

    劣质加密

    劣质加密比不使用加密还糟糕,错误的使用加密这种行为会给企业带来一种虚假的安全感。开发人员应当谨慎的对待加密技术方面的技能和技巧。

    4.3.数据库本身存在的风险

    存储文件解析后为明文

        数据库的数据是存储在物理文件里,这些数据按照数据库自定义的格式组织在数据库中,但这些数据本质上都是明文存储;主流的大型数据库数据文件的组织结构主动或被动公开化,只要得到这些数据文件,存储的数据其实就是透明的。

        这些存储文件包括数据库的数据文件、备份文件、日志文件等;这样只要能够访问或得到数据库存储文件,就可以获得数据库中的信息。 

    数据库系统存在安全漏洞

        数据库往往被认为具备较为完备的安全机制,从身份认证、访问控制、到通讯加密,但事实上数据库也存在诸多的安全漏洞;

        这些漏洞大多是国际上的安全专家对数据库安全状况进行研究后发现的,包括提权漏洞、缓冲区溢出漏洞、系统注入漏洞。

    数据库应用访问控制缺陷

        数据库应用的访问控制机制,依然是典型的三元组,也就是主体、客体和操作,其中主体主要是数据库用户或角色,客体是数据库对象,操作是典型的DDL、DML、ACL语句和某些维护操作;但对这些操作的具体内容和影响不再做控制。

    5.MySQL数据库

        结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

        数据库维护包括备份系统数据、恢复数据库系统、产生用户信息表,并为信息表授权、监视系统运行状况,及时处理系统错误、保证系统数据安全,周期更改用户口令。

        当一个数据库被创建以后的工作都叫做数据库维护。数据库维护比数据库的创建和使用更难。

    5.1.数据库系统表结构

        数据表,简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。一个表是一组相关的按行排列的数据;每个表中都含有相同类型的信息。表实际上是一个二维表格。

    定义表的方式:

    MySQL自带的数据库以及系统表

        mysql自带有四个数据库,分别是:mysql、information_schema、test、performance_schema。 

    1.mysql库主要存储各类权限相关信息及帮助信息。

    2.information_schema库主要存储数据库对象相关概要(schema)信息。

    3.test是一个测试用的空数据库。

    4.performance_schema主要存储配置及性能信息。

     相关命令:

    show databases;查看数据库。
    use 库名;进入该库。
    例:
    use mysql;进入mysql库
    show tables;查看该库下面的数据表
     

    MySQL自带的数据库以及系统表-MYSQL库

        主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。mysql数据库中比较重要的一个表是user表,通过这个表我们可以清楚的查询到数据库用户的基本信息。
     

    MySQL自带的数据库以及系统表-information_schema库

    information_schema库主要存储数据库对象相关概要(schema)信息,如字符集、引擎、数据库、表、视图、列、权限等。
    主讲以下三个表:
    Schemata
    Tables
    Columns 
    MySQL自带的数据库以及系统表-information_schema库-schemate表
    schemata表主要是存储在mysql数据库下所有库的信息,当使用show databases命令的结果就是取自这个表。
    此表有五列,分别是:
    CATALOG_NAME;
    SCHEMA_NAME;
    DEFAULT_CHARACTER_SET_NAME;
    DEFAULT_COLLATION_NAME;
    SQL_PATH;
    其中SCHEMA_NAME列存储的就是mysql数据库下所有库的名字。

    MySQL自带的数据库以及系统表-information_schema库-tables表
    tables表提供了关于数据库中的表的信息(包括视图)。
    表中也有两个很重要的列
    table_schema:表所属数据库的名字
    table_name:表的名字
    MySQL自带的数据库以及系统表-information_schema库-columns表
    columns表提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。
    table_schema:字段所属数据库的名字
    table_name:字段所属数据表的名字
    column_name:字段的名字
    Information_schema库

    通过Information_schema库非法获取数据库信息的大概手段

    database()通过此函数查看当前所在库

    select schema_name from information_schema.schemata;查询当前数据库中的所有库,排查存有敏感信息的库。

    select table_name from information_schema.tables where table_schema='mysql';查询目标数据库下的所有表。如:mysql数据库。

    select column_name from information_schema.columns where table_schema='mysql' and table_name='user' ;查询目标数据库目标表的所有字段名称。 如:mysql数据库的user表。

    select user from mysql.user;通过之前操作获取信息后查询表内存储的信息。

     以上的查询方法并非死规定,查询命令只提供思路,在注入时可自由变形或替换以用来绕过过滤和检测。

     5.2.数据库增删改查

     5.2.1.准备工作

    1. 安装phpstudy

    2..安装navicat

    登陆MySQL:

    mysql -u 用户名 -p密码

    mysql –u 用户名 –p 回车,密码( 安全性高 )

     

    MySQL 在 Linux 与 window 下的大小写规则:

    1、数据库名、表名、表别名严格区分大小写

    2、列名、列的别名忽略大小写

    3、变量名严格区分大小写

    4、MySQL 在 Windows 下各个对象名都不区分大小写 

     

     5.2.2.SQL语句简介

        结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。sql 语句就是对数据库进行操作的一种语言。

        SQL是一种特定目的程序语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。

        SQL基于关系代数和元组关系演算,包括一个数据定义语言和数据操纵语言。SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。尽管SQL经常被描述为,而且很大程度上是一种声明式编程(4GL),但是其也含有过程式编程的元素。

     5.2.3.MYSQL数据库基本操作

        在数据库的操作中最基础的就是增删改查的操作,这里我们使用mysql数据库给大家讲一下增删改查这四个基础操作。

        增删改查主要是指:增-create;删-delete;改-update;查-select。这四种操作,除了这四种操作,还有其他的函数也可以做到这些操作。

     

     5.2.4.数据表简单使用

    查看所有数据库名:
    show databases;

    创建数据库info:

    create database info;

    创建字符集为utf8的数据库info:

    create database info charset utf8;

    进入数据库info:

    use info;

    查看info数据库下所有的表:

    show tables;

     5.2.5.mysql 数据库的字符集

    SHOW CHARACTER SET; 
    支持中文的 mysql 数据库字符集:
    utf8、Gbk、Gb2312,其中 Gbk 和 utf8 是常用字符集。
     

     5.2.6.增删改查

    增-create
     
    自定义数据表
    create table [if not exists] 表名 (定义字段)[设置表选项]
     
    定义字段时,格式如下:
    字段名 数据类型 [完整性约束条件]
     

     

    完整性约束条件
          完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件。它表达了给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的编码,以确保数据的正确、有效和相容。
     
    主键
    create table student(
    sid int primary key,
    sname varchar(30) not null,
    );
    或者:
    create table student(
    sid int not null,
    sname varchar(30) not null,
    primary key(sid,sname)
    );
    设置了主键后,每当用户程序对基本表插入一条记录或对主键列进行更新操作时,数据库系统将按照如下规则进行检查
    1. 检查主键值是否唯一,如果不唯一则拒绝插入或修改
    2. 检查主键的各个属性是否为空,如果为空则拒绝插入或修改
     
    外键
    第一步:创建student表,主键sno
    create table student(
    sno int primary key,
    sname varchar(20)
    );
    第二步:创建sc表,主键cno,外键sno
    create table sc(
    cno int primary key,
    sno int not null,
    foreign key(sno) references student(sno)
    );
     
    外键将两个表中的相应数据联系在了一起。
    对被参照表和参照表进行增删改,会进行如下检查。
    1. Sc表中添加数据A时,在student表中找不到与数据A中sno字段值相等的sno字段值时,拒绝操作。
    2. 修改sc表中的数据时,修改后在student表中找不到与sc表中sno字段值相等的sno字段值时,拒绝操作。
    3. 从student表中删除数据时,造成sc表中sno数据值在student表中找不到对应的sno值时,拒绝操作或重置为空。
     
    字段值非空
    create table sc(
    sno varchar(30) not null,
    cno varchar(30)
    );
     
    自动增加
    create table student (
    id int primary key auto_increment,
    name varchar(30));
     
    复制其他数据表结构
    create table [if not exists] 新表名 like 原表名
    desc查看表结构
    请自主创建admin表,结构如下:

    增-insert

    指定列插入数据

    INSERT INTO 表名(列1,…… 列n) VALUES(值 1,…… 值 n); 

    或者

    直接插入数据

    INSERT INTO 表名 VALUES(值 1,…… 值 n);

     

    insert注意事项

    1. 值列表的个数必须与列名数目保持一致;

    2.可以进行多条添加,添加完每条数据后,用逗号隔开即可;

    3. 值列表中值的数据类型、精度要与对应的列类型保持一致,例如:

    不能将一个长度为80的字符串加入到长度为40的列中;

    4. 可以不指定列名,但值列表中值的顺序应该与表中字段顺序保持一致;

    5.字符和日期型数据应包含在单引号中。

    6. 值列表中的数据项,应符合对应列的检查约束要求;

    复制数据

    语法: INSERT INTO <表2> [列名] SELECT <列名> FROM <表1>

    1 、< 表 2> 必须事先存在,表2是新表。如果不存在,执行时将会出现错误。

    2 、查询出的字段数目、数据类型、字段顺序,与插入列保持一致。

    删-delete
     
    删除所有数据

    删除表中定义的数据

    delete from 表名 [where 条件] 

    删-drop

    删除数据

    1. 如果不使用where子句,将删除表中所有数据。

    2. Delete语句不能删除某一列的值(可使用update)

    3. 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。

    改-update
     

    单表修改

    update 表名 set 字段名=字段内容 [where 条件];

    跨表修改
    将t1表中的price修改为t2表中price值的80%
    update t1,t2 set t1.字段 = t2.字段*8 where t1.id = t2.id;
    修改数据注意问题
    1.可以更新主键列数据,但应保证更新后的主键列数据不能出现重复信息,否则将更新失败!
    2.可以更新表中外键列数据,但应保证新数据在主键表的中应事先存在。
     
    改-alter
     

    修改表结构

    1. alter table 表名 add 字段名 字段约束条件 # 增加字段

    2. alter table 表名 drop 字段名 # 删除字段

    3. alter table 表名 change 字段名 新字段名 字段约束条件 # 修改字段

    4. alter table 表名 modify 字段名 字段约束条件 # 修改字段约束条件

     
    查看数据

    查-select
     

    选择表中的若干列

    (1)查询指定的列

    select id,name from student;

    (2)查询所有的列

    select * from student;

    (3)查询经过计算的值

    select id,2018-age from student;

    选择结果集中的若干行

    (1) 消除值重复的行

    select distinct name from student;

    (2) 查询满足条件的行

    select name from student where 条件;

    (3) 限制结果集显示的行数

    select * from student limit 0,1;

     
    查-show
     

    show命令能够查看当前数据库,以及数据表:

    show databases;能够查看所有数据库,主要database后边不要忘了加s;

    show tables;能够查看当前库下的所有数据表,这个操作要用在已经通过“use 库名”进入库之后才能查到

     

    5.3.结构化查询语言SQL

     
    SELECT过滤数据
     

    where常用的比较运算符

    查询姓名为aa的学生信息

    select * from stu where name=‘aa’;

    查询所有女生(非男生)的学员信息

    select * from stu where sex <> ’boy’;

    Between and
    使用between运算来显示一个区间内的值,语法如下:
    [NOT] between 取值1 and 取值2
    解析:
    其中,“NOT”是可选参数,加上NOT表示不在指定范围内满足条件;“取值1”表示范围的起始值;“取值2”表示范围的终止值。
    取值范围:[取值1,取值2]
     
    查询在1995-07-13到1995-07-15之间的学生信息。
    select * from student where birthday between ‘1995-07-13’and‘1995-07-15’;
    IN
    IN 关键字可以判断某个字段的值是否在指定的集合中,如果字段的值在集合中,则满足查询条件,该记录将被查询出来;如果不在集合中,则不满足查询条件。
    语法规则:
    [NOT] IN (元素1,元素2,…,元素n)
    解析:
    其中,“NOT”是可选参数,加NOT表示不在不在集合内满足条件;“元素n”表示集合中的元素,各元素之间用逗号隔开,字符型元素需要加单引号。
    Like模糊查询
    含义:
    like操作符用于在 where 子句中搜索列中的指定模式。
    使用like运算选择类似的的值
    选择条件可以包含字符或数字:
    % 代表零个或多个字符(任意个字符),可用于定义通配符(模式中缺少的字母)_ 代表一个字符。

    通配符

    字符匹配

    select school from student where name like ‘zhang%’

    select school from student where name like ‘zhang_’

    例:

    查询姓张的学员信息

    select * from student where name LIKE ‘张%’;

    select * from student where name LIKE‘王_’;

     

    ORDER BY子句

    用户可以用ORDER BY字句对结果集按照一个或多个数据列的升序(ASC)或

    降序(DESC)排列,默认升序

    select * from student order by name desc;

    group by 语句

    将结果集按照某一列或多列的值进行分组,值相等的为一组。

    分组后,聚集函数将作用于结果集中的每一个组。

    5.4.数据处理

    如何使用函数
    mysql>select 函数

    concat(str1,str2..)函数直接连接

    group_concat(str1,str2..)函数使用逗号做为分隔符

    concat_ws(sep,str1,str2..)函数使用第一个参数做为分隔符

    concat的使用限制

    当concat后面连接的字符有一个是空时,整个显示为空。

    5.5.联合查询

        在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询叫做子查询,又叫嵌套查询。

    1. 带有IN谓词的子查询

    # 查询与zhangsan一个系的所有同学的名字

    select name from student where dept in (

    select dept from depts where name = ‘zhangsan’)

    2. 带有比较运算符的子查询
    # 查询与zhangsan一个系的所有同学的名字
    select name from student where dept = (
    select dept from depts where name = ‘zhangsan’)

    3. 带有ANY或ALL谓词子查询

    查询一班学生年龄大于二班所有人年龄的人

    select name from ban_1 where age>ALL (select age from ban_2)

    查询一班学生年龄小于一班所有人年龄的人

    select name from ban_2 where age<ALL (select age from ban_1)

     

    内外连接

    内连接

    Table_a Inner join table_b on …..

    内连接使用比较运算符,对两个表中的数据,进行比较,并列出与连接条件匹配的数据行,组合成新的记录。

    在内连接查询中,只有满足条件的记录,才会出现在查询结果中。

    左连接(左外连接)

    left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。

    左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

     

    右连接(右外连接)

    right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。

    与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

    图示:

    UNION联合查询

    UNION查询就是把2条或者多条查询语句的结果合并成1个结果集

    使用union all显示所有数据

    UNION查询注意事项:

    1. UNION关键字只能连接查询语句

    2. UNION关键字两侧的查询语句,结果集必须有相同的列数

    5.6.Mysql维护

    5.6.1.数据的备份和恢复

    MySQL的数据的逻辑备份使用的mysqldump命令

    1.只备份数据表,不备份数据库

    也就是没有create database和user database 的语句

    mysqldump -u username -p password dbName > name.sql存放路径

     

    恢复的语句:首先需要创建好数据库,才能使用下面的命令

    2.同时备份数据库

    mysqldump -u username -p password -B dbName > name.sql路径

    恢复语句:

    mysql -uusername -ppassword[dbname]<filename.sql

    username: 登录的用户名。

    password : 表示用户的密码

    dbname 表示要还原的数据库名称,若使用mysqldump命令备份的filename.sql文件中包含创建数据库的语句,则不需要指定数据库。

    5.6.2.访问控制&用户管理

    查看当前数据库下的用户

    mysql 用户登录的时候需要三个认证:

    1.用户名

    2.密码

    3.客户端

    例如:

    新建一个账号,用户名为u3;登录主机为192.168.76.2;密码为123456。

    create user 'u3'@'192.168.76.3' identified by '123456';

    用户名和登录主机合起来构成mysql的用户名。通过查询mysql数据库中的user表,我们可以清楚的看到即使用户名相同,登录主机不相同也构成了两个账号。

    修改用户密码

    mysql>set password for ‘user’@’host' = password(‘new_password');

    修改用户账号

    mysql>rename user ‘old_user’@’old_host’ to ‘new_user’@’new_host’

    删除用户

    mysql>drop user ‘user’@’host’;

    用户权限

    1. 可以限制用户访问哪些库、表、列

    2. 可以限制用户可以执行哪些操作SELECT、CREATE、DELETE、ALTER等

    3. 可以限制用户登陆的IP或域名

    4. 可以限制用户是否可以把自己权限授予给他人

    查看用户权限

    mysql>show grants for ‘user’@’host’;

     

    5.6.3.日志查看

    1.错误日志(log-error)

    2.查询日志(log)

    3.二进制日志(log-bin)

    4.慢查询日志(log-slow-queries)

    5.更新日志(log-update)

     

    1. 错误日志(log-error)

    [开启方式]

    my.ini配置文件[mysqld]选项下,添加log_error=路径,如D:/error.txt

    [作用]

    记录在启动、运行或停止mysqld时出现的致命性问题,都是系统级的错误记录。

    2. 查询日志(log)

    [开启方式]

    my.ini配置文件[mysqld]选项下,添加log=路径,如D:/log.txt

    [作用]

    主要是记录数据库建立的客户端连接和执行的语句

    3. 二进制日志(log-bin)

    [开启方式]

    my.ini配置文件[mysqld]选项下,添加log_bin=路径,如D:/bin_log.txt

    [作用]

    主要是记录所有的更改数据的语句

    4. 慢日志(log-slow-queries)

    [开启方式]

    my.ini配置文件[mysqld]选项下,添加

    Log_slow_queries = 路径

    long_query_time = 秒 (设定慢查询的标准,单位是s/秒)

    [作用]

    主要是记录所有执行时间超过long_query_time的查询

    5.6.4.MySQL加固

    1.防止空口令/弱口令

    修改用户密码

    mysql>set password for ‘user’@’host' = password(‘new_password');

    2. 历史命令行密码设置为不可见

    在登陆mysql时,使用mysql –uroot –p的形式

    3.使用专用的最小权限账号运行MySQL数据库进程
    linux系统下默认低权限
    Windows下MySQL的权限继承了它的运行权限。
    4. 数据库用户权限最低化
    例如博客网站,设置服务器连接的数据库用户只具有查看博客数据表的权限
    5. 数据库备份
    mysqldump -u username -p password dbName > name.sql
    6. 修改mysql的端口

    7. 限制用户连接的数量
    8. 限制远程连接

    [my.ini]

    bind-address=127.0.0.1

     
     
     
     
     
    最后还有SQL Server数据库的相关知识,会在后续补齐。
    如内容有误,欢迎评论区提出建议与意见。
  • 相关阅读:
    共享内存:mmap函数实现
    navigationItem.rightBarButtonItem 设置背景图片,颜色更改解决的方法
    C语言基础
    easyui datagrid合并相同数据的单元格。
    js 计算总页数的最高效方式
    取消本地文件夹与SVN服务器的关联
    扩展自easyui的combo组件的下拉多选控件
    利用art.template模仿VUE 一次渲染多个模版
    利用art.template模仿VUE
    JavaScript单独的模块中传递数据
  • 原文地址:https://www.cnblogs.com/Tzsblog/p/14163510.html
Copyright © 2020-2023  润新知