字符集之 GB2312装不下“屌丝"??
- **字符(Character)**是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
- 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见的字符集有ASCII、GB2312、GBK、 GB18030、Unicode等。计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字。
- MySQL支持的字符集
show character set;
是utf8mb4 - 设置字符集
- 1、数据库
- 创建数据库时指定字符集
CREATE DATABASE databaseName CHARSET utf8 COLLATE utf8_general_ci;
- 查看数据库的字符集
SHOW CREATE DATABASE databaseName;
- 创建数据库时指定字符集
- 2、表
- 创建表时指定字符集
CREATE TABLE tableName(…) DEFAULT CHARSET=utf8;
- 查看数据库的字符集
SHOW CREATE TABLE tableName;
- 创建表时指定字符集
- 3、字段
CREATE TABLE tableName(…, name varchar(50) not null CHARSET utf8, …);
实战:字符集之GB2312装不下“屌丝“
#
create table t1(name varchar(30)) dafault charset=gb2312;
insert into t1 value2("张三");
//ok
insert into t1 values("屌丝");
//失败了!!!!!!gb2312不支持繁体字
#
create table t1(name varchar(30)) dafault charset=gbk;
insert into t1 value2("张三");
insert into t1 values("屌丝");
//成功!!!!!!
黑客常说的SQL注入是什么???
- SQL注入(SQL Injection)是指应用程序对用户输入数据的合法性没有判断、没有过滤,攻击者可以在应用程序中通过表单提交特殊的字符串,该特殊字符串会改变SQL的运行结果,从而在管理员毫不知情的情况下实现非法操作,以此来实现欺骗数据库执行非授权的任意查询。
- 特性:广泛性/隐蔽性/危害性/操作简单
实战:如何进行SQL注入
- 验证账号密码是否匹配
create table user(
id int not null auto_increment primary key,
username varchar(30) comment '用户名',
password varchar(30) comment '密码'
);
insert into user(username, password) values('admin', '123456');
insert into user(username, password) values('test', '123456');
#
select * from user where username='abc' and password='' or '1'='1';
如何恢复误删的数据
什么是binlog日志
- MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
- 万一遇到数据丢失的紧急情况下,可以使用binlog日志进行数据恢复(定时全备份+binlog日志恢复增量数据部分)
使用binlog恢复误删的数据
#查看所有二进制日志列表
show master logs;
#查看正在使用的二进制日志
show master status;
#刷新日志(重新开始新的binlog日志文件)
flush logs;
#查询指定的binlog
show binlog events in 'WQ-20160826MDKU-bin.000050' from 10668\G;
#导出恢复数据用的sql
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 8.0\Data\WQ-20160826MDKU-bin.000057" --
start-position 528 --stop-position 1191 > d:\backup\test.sql
审计功能:谁什么时间做了什么
- 审计是数据库安全中很重要的一个环节,它能够实时记录数据库的操作记录,帮助数据库管理员对数据库异常行为进行分析审核。审计会详细记录谁、在什么时间、执行了什么操作。MySQL社区版没有自带的审计功能或插件,MySQL商业版中有审计功能。
- 第三方的审计插件
- Percona审计插件 audit log: 此插件是Percona的内置审计插件,兼容性不高,需要适配。
- MariaDB审计插件 server audit: 此插件是MariaDB的内置审计插件,MariaDB_5.5.37版和MariaDB_10.0.10以后版本的audit插件支持MariaDB、MySQL和Percona Server使用。
- Mcafee审计插件 libaudit_plugin: 此插件已经在github上开源,它是McAfee公司基 于Percona开发的MySQL审计插件。
MySQL图形化管理工具
-
MySQL的管理工具非常多,除了自带的命令行管理工具之外,还有许多其他的图形化管理工具。
-
MySQL Workbench
MySQL Workbench为数据库管理员、程序开发者和系统规划师提供可视化设计、模型建立、以及数据库管理功能。它是MySQL官方提供的图形化管理工具,功能很强大,值得推荐。
下载地址:https://dev.mysql.com/downloads/workbench/ -
HeidiSQL
HeidiSQL是一款免费的软件,其目标是易于学习和使用,可用于MySQL、MariaDB、SQL Server和PostgreSQL。
下载地址:https://www.heidisql.com/ -
phpMyAdmin
phpMyAdmin是采用PHP语言开发的,需要部署在Web服务器上,管理者可用Web接口管理MySQL数据库,支持中文。
下载地址:https://www.phpmyadmin.net/ -
Navicat
Navicat是开发者使用较多的一款图形化管理工具,界面简洁、功能强大、简单易学、支持中文。可用于MySQL、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL七种数据库。
下载地址:http://www.navicat.com.cn/products -
SQLyog
Webyog公司的产品,一款易于使用、快速而简洁的mysql数据库图形化管理工具。
下载地址:https://www.webyog.com/product/sqlyog
Windows下my.ini配置文件修改后无法启动的问题解决
- 在Windows中,修改了MySQL 8.0的配置文件
my.ini
后会发现启动MySQL失败 - 在Windows中,MySQL配置文件的编码为
ANSI
,但是修改配置文件后默认保存的编码为UTF-8
,这会导致MySQL解析配置文件错误,无法启动。只需要将配置文件另存为ANSI编码即可。