一部分参数配置
vim /etc/my.cnf | |
[client] | |
port=3306 | |
socket=/var/lib/mysql/mysql.sock | |
default-character-set=utf8mb4 | |
[mysql] | |
default-character-set=utf8mb4 | |
prompt="\u@mysqldb \R:\m:\s [\d]>" | |
no-auto-rehash | |
[mysqld] | |
use=mysql | |
port=3306 | |
socket=/var/lib/mysql/mysql.sock | |
pid-file=/var/lib/mysql/mysql.pid | |
datadir=/var/lib/mysql | |
character-set-server=utf8mb4 # 服务端编码 | |
collation-server=utf8mb4_general_ci | |
init_connect='SET NAMES utf8mb4' | |
lower_case_table_names=1 # sql大小写敏感,1为不敏感 | |
open_files_limit=65535 | |
max_connections=2000 | |
max_connect_errors=100000 # 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接,如需对该主机解禁,执行flush host | |
back_log=1024 # 如果mysql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源 | |
default_storage_engine=InnoDB # 设置默认存储引擎 | |
skip-name-resolve | |
table_open_cache=1024 | |
read_buffer_size=16M # 读入缓冲区大小 | |
read_rnd_buffer_size=8M # 随机读缓冲区大小 | |
sort_buffer_size=8M # 顺序读缓冲区大小 | |
sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER # 定义了mysql应该支持的sql语法,NO_AUTO_CREATE_USER表示禁止grant创建密码为空的用户 | |
# master-slave Setting | |
skip-slave-start # 复制环境的数据库建议设置该参数,防止复制随着数据库启动而自动启动 | |
slave_net_timeout=30 # mysql主从,当master和slave之间的网络中断,slave会等待30秒,才认为网络出现故障,然后才会重新连接并追赶这段时间主库的数据 | |
# InnoDB Setting | |
innodb_page_size=8k # 这个参数一开始初始化就要加入到配置文件中,如果创建了表,在修改,启动mysql会报错,最好为8k | |
innodb_buffer_pool_size=2G # 数据缓冲区buffer pool大小,建议使用物理内存的75% | |
innodb_file_per_table=1 # 独立表空间 | |
# Log Setting | |
general_log=1 # 开启通用日志 | |
general_log_file=/var/log/mysql/general.log # 通用日志保存路径 | |
slow_query_log=1 # 开启慢查询 | |
long_query_time=5 # 慢查询阀值 | |
slow_query_log_file=/var/log/mysql/slow.log # 慢查询日志保存路径 | |
log_output=FILE | |
log_error=/var/log/mysql/error.log | |
log_queries_not_using_indexes=1 # 表示记录下没有使用索引的查询 | |
log_slow_admin_statements=1 # 记录管理语句 | |
expire_logs_days=15 # 二进制日志自动删除的天数,默认为0,表示不自动删除 | |
max_binlog_size=1G |
sql模式
mysql数据库中的sql_mode模式
ONLY_FULL_GROUP_BY # 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中 | |
STRICT_TRANS_TABLES # 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制 | |
NO_ZERO_IN_DATE # 在严格模式,不接受月或日部分为0的日期 | |
NO_ZERO_DATE # 在严格模式,不要将0000-00-00做为合法日期 | |
ERROR_FOR_DIVISION_BY_ZERO | |
NO_AUTO_CREATE_USER # 防止grant自动创建新用户,除非还指定了密码 | |
NO_ENGINE_SUBSTITUTION # 如果需要的存储引擎被禁用或未编译,那么就抛出错误,不设置此值时,用默认的存储引擎替代 |
查看sql_mode
# 查看当前数据库使用的sql_mode | select @@sql_mode;|
# 查看当前连接会话的sql_mode模式 | select @@session.sql_mode;|
'sql_mode'; # 从环境变量查看sql_mode模式 | show variables like|
# 查看全局sql_mode设置 | select @@global.sql_mode;