Mysql常见配置参数

来自linux中国网wiki
跳到导航 跳到搜索

my.cnf

max_connect_errors

max_connect_errors是一个MySQL中与访问安全有关的一个参数,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。但是经过实际测试,发现此参数并不能真正的阻止恶意的客户端恶意访问MySQL Server,下面我就来对这个参数的作用以及测试过程做个说明。

max_connect_errors这个参数可以动态修改设置,所以你可以在命令行直接设置:

set global max_connect_errors=10

但是一旦MySQL服务重启,上面设置的值就失效了,如果想要永久生效,还需要修改MySQL参数文件,在其中添加此参数的设置

有的人可能觉得设置完此参数后,就可以正常拦截同一个client,密码错误的访问连续超过10次的情况了,而现实是这样的么?经过本人在5.6.24上测试,发现此参数是没有作用的。如果想要此参数生效,需要具备至少下面的两个条件:

    只有设置参数skip_name_resolve为OFF时,参数max_connect_errors才能生效,否则不能生效,即

                                skip_name_resolve=OFF

                                max_connect_errors=10

你真的了解MySQL中max_connect_errors的作用么?

MySQL参数max_connect_errors分析释疑

wait_timeout

那些年踩过的MySQL wait_timeout参数的坑

全局设置密码过期:default_password_lifetime

MySQL 5.7设置用户密码过期

MysqL 主从事务数据安全之sync_binlog

ync_binlog:是MySQL 的二进制日志(binary log)同步到磁盘的频率(刷新二进制日志到磁盘),默认是0,意味着mysql并不刷新,由操作系统自己决定什么时候刷新缓存到持久化设置,如果这个值比0大,它指定了两次刷新到磁盘的动作之间间隔多少次二进制日志写操作。

sync_binlog=1 or N

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。这个是性能最好的。

sync_binlog=1,当每进行1次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

如果没有设置它为1,那么崩溃后可能导致二进制日志没有同步事务数据,有可能binlog中最后的语句丢失。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使binlog在每N次binlog写入后与硬盘 同步。即使sync_binlog设置为1,出现崩溃时,也有可能表内容和binlog内容之间存在不一致性。如果使用InnoDB表,MySQL服务器 处理COMMIT语句,它将整个事务写入binlog并将事务提交到InnoDB中。如果在两次操作之间出现崩溃,重启时,事务被InnoDB回滚,但仍 然存在binlog中。可以用--innodb-safe-binlog选项来增加InnoDB表内容和binlog之间的一致性。(注释:在MySQL 5.1中不需要--innodb-safe-binlog;由于引入了XA事务支持,该选项作废了),该选项可以提供更大程度的安全,使每个事务的 binlog(sync_binlog =1)和(默认情况为真)InnoDB日志与硬盘同步,该选项的效果是崩溃后重启时,在滚回事务后,MySQL服务器从binlog剪切回滚的 InnoDB事务。这样可以确保binlog反馈InnoDB表的确切数据等,并使从服务器保持与主服务器保持同步(不接收 回滚的语句)。
注:

大多数情况下,对数据的一致性并没有很严格的要求,所以并不会把 sync_binlog 配置成 1. 为了追求高并发,提升性能,可以设置为 100 或直接用 0。而和 innodb_flush_log_at_trx_commit 一样,对于支付服务这样的应用,还是比较推荐 sync_binlog = 1.

MysqL 主从事务数据安全之sync_binlog

Mysql配置参数sync_binlog说明

mysql 参数调优(7) binlog的写入优化 sync_binlog

other

max_connect_errors的值为10
wait_timeout参数为1800,连接超时30分钟会自动退出。

on line 

set global max_connect_errors=10;

set global wait_timeout 1800;

SET GLOBAL default_password_lifetime = 90;


add to my.cnf 

[mysqld]
interactive_timeout = 1800
wait_timeout = 1800

max_connect_errors = 10


default_password_lifetime=90

see also

MySQL配置文件