MySQL的一些常用配置参考

摘要

本文介绍MySQL的一些常用配置参考。错误的配置可能导致对数据库操作时的一些异常报错或非法数据的插入。

一、MySQL5.6极简配置

[mysqld]
# 端口号
port							= 3306
# 指定server的字符集
collation-server 				= utf8_general_ci
# 指定连接时的初始化编码
init-connect					= 'SET NAMES utf8'
# server的字符编码
character-set-server 			= utf8
# 最大允许的数据包大小
max_allowed_packet 				= 500M
# 1:表名不区分大小写,0:区分大小写
lower_case_table_names			= 1
innodb_flush_log_at_trx_commit 	= 0
innodb_file_per_table 			= 1

# sql_mode配置
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

basedir=/var/lib/mysql
datadir=/var/lib/mysql/data

[client]
port							= 3306
default-character-set			= utf8

[mysql]
default-character-set			= utf8

二、linux下的my.cnf文件在哪

可以通过以下命令查找my.cnf文件

mysql --help | grep my.cnf

# 输出如下,mysql按顺序查询以下文件;
# 如果找不到,可以在以下位置新建my.cnf文件,写入配置即可
# /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

三、max_allowed_packet

有时mysql在导入、插入、更新时可能会受到max_allowed_packet参数的限制报错,修改后即可。文章源自新逸网络-https://www.xinac.net/8800.html

# 查看当前配置
show VARIABLES like '%max_allowed_packet%';

修改方法:文章源自新逸网络-https://www.xinac.net/8800.html

编辑my.cnfmy.ini来修改配置,在[mysqld]段配置进行修改。文章源自新逸网络-https://www.xinac.net/8800.html

max_allowed_packet = 300M

四、sql_mode

该参数设置不合理时,可能会遇到读写错误,设置为正确的值即可。文章源自新逸网络-https://www.xinac.net/8800.html

[mysqld]
sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

如果没有设置,可能会遇到的错误:文章源自新逸网络-https://www.xinac.net/8800.html

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_tl.emp.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by文章源自新逸网络-https://www.xinac.net/8800.html

 文章源自新逸网络-https://www.xinac.net/8800.html

参数说明:文章源自新逸网络-https://www.xinac.net/8800.html

  1. ONLY_FULL_GROUP_BY
    对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中
  2. NO_AUTO_VALUE_ON_ZERO
    该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了
  3. STRICT_TRANS_TABLES
    在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
  4. NO_ZERO_IN_DATE
    在严格模式下,不允许日期和月份为零
  5. NO_ZERO_DATE
    设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
  6. ERROR_FOR_DIVISION_BY_ZERO
    在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL
  7. NO_AUTO_CREATE_USER
    禁止GRANT创建密码为空的用户
  8. NO_ENGINE_SUBSTITUTION
    如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
  9. PIPES_AS_CONCAT
    将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
  10. ANSI_QUOTES
    启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

 文章源自新逸网络-https://www.xinac.net/8800.html 文章源自新逸网络-https://www.xinac.net/8800.html

weinxin
新逸IT技术
扫一扫关注微信公众号
Admin
  • 本文由 发表于 2020-07-22
  • 转载请注明:https://www.xinac.net/8800.html
MySQL主从复制配置 运维笔记

MySQL主从复制配置

主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。 对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础...
评论  0  访客  0
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定