MySQL 学习篇(二)——安全相关配置参数与Sql_model常用参数介绍 4

  • 前言

Mysql一些配置和安全相关,这些配置可以保证服务器更加的安全和可靠,可以避免一些无意义的数据插入到数据库中,比如错误的日期数据等等

  • 安全相关配置参数

expire_logs_days:控制的是binlog自动删除的时间,间隔是以天为单位,如果我们在启用binlog的日志,就应该打开这个选项,可以让服务器自动清理旧的二进制日志,以防止二进制日志占用太多空间,最终把服务器的空间耗尽的这种情况;

这个参数的设置应该至少可以覆盖两次全备所间隔的天数,如果每天的都会进行全备的话,也应该至少把binlog保存七天左右,以便在特殊情况下的查找,比如当数据库中的数据出现异常时,就有可能使用到binlog来查询这些异常产生的原因。

max_allowed_packet:定义了Mysql可以接受的最大包的大小,也是会影响用户定义变量的最大容量,对于这个参数的默认值来说,那可以说是太小了,我们需要把这个参数调整的相对来说大一些,比如32兆;

另外要注意的是,如果使用的主从复制,那么主从复制服务器上关于这个参数的配置最好是保持一致的,如果从上的配置小于主的配置的话,那么可能会造成主从同步的失败。

skip_name_resolve:是禁用的DNS查找,当连接服务器默认情况下,Mysql都会试图确定连接的数据库的客户端所使用的主机的域名,但是为了验证域名Mysql就需要执行DNS正向与反向查找,要是在DNS服务器出现问题的情况下,就会出现查询的堆积,最终会导致连接的超时,为了避免强烈建议大家启用这个选项,也就是在验证时得关闭DNS查找;

但是也要注意,如果我们启用这个参数的话,在进行用户授权人就只能对特定的IP或者是IP段,或者就是在本机host文件中出现的域名进行授权了。

sysdate_is_now:确保sysdate()返回确定性日期,默认情况下在一个SQL语言中多次调用sysdate()函数,可能会返回不一样的结果,这可能会造成一些意想不到的后果;

比如基于段的主从重复制结构中会造成主从复制的数据都不一致,从而使主从复制中断,所以建议大家在配置文件中的增加这个参数。

read_only:建议大家在主从复制结构中的从库中来启用,它可以禁止任何没有super权限的这个用户,在从库可执行的数据变更操作,直接上从主库中传输过来的数据变更,这个参数对保证主从数据的一致性很有用,所以建议大家一定要在备库中,启用这个参数;在给应用用户授权时一定要注意不要授予super权限,否则这个参数的将起不到任何的作用。

skip_slave_start:参数也是使用在主从重复制的结构中的从库上,它阻止Mysql在重启后,试图自动的启动复制,因为在一个不安全的崩溃或者其他问题后,自动启动复制的也是不安全的,在手动检查服务器没有问题后,我们再重新开始我们的复制链路。

sql_mode:用于设置Mysql所使用的sql模式,还默认情况下Mysql对sql语法的检查是比较宽松的;

比如我们在执行分组查询时,允许查询中所使用的非聚合函数的列,不全部出现Group by 从句中,这其实是不符合sql规范的,但是Mysql对这样的sql并不会报错,如果我们更改了sql_mode这个参数,可以使像这样的不正确的Group by 操作无法执行,所以如果想要修改sql_mode,大家一定要谨慎,因为很有可能会造成现在的程序无法运行。

  • Sql_model具体参数介绍

sql_mode选项如下:

strick_trans_tables:如果给定的数据不能插入到事务型存储引擎中,则会中断当前操作,对非事务存储引擎这个参数是没有任何影响的。

no_engine_subtitution:如果在create table 语句中,所指定的存储引擎不可用的情况下,不会使用默认存储引擎来建立表,这保证了我们在建表时,可以使用我们认为Mysql所使用的一种存储引擎,如果我们指定这个存储引擎是不可用的,这个表也不会建立成功、

no_zero_date:在严格的sql模式下,不能把0年0月0日这样的日期写入到表中的日期字段上。

no_zero_in_date:和上面类似,在严格的sql模式下,不接受部分日期为零的这种日期。

only_full_group_by:这个就是我们上面的例子中所说到的,使用了这个模式要求在分组查询中,Group by语句把所有没有聚合函数的列全部要列出来,否则sql语句就是不能执行。

猜你喜欢

转载自blog.csdn.net/Sicily_winner/article/details/87749152