Mysql?文件配置解析
前言:
mysql
數(shù)據(jù)庫在日常工作開發(fā)中經(jīng)常用到的存儲設(shè)備, 之前已經(jīng)分享了面試過程中經(jīng)常被問到的mysql
優(yōu)化的內(nèi)容,本期就結(jié)合mysql
的配置文件進(jìn)行分析。這里需要說明的是, 在windows
系統(tǒng)的配置文件為 my.ini
, 而在Linux
上的配置文件為my.cnf
。
client 端配置
在客戶端的配置文件 主要包括 mysql
的服務(wù)端口,已經(jīng) mysql
連接通信文件,以及客戶端連接的字符集。
[client] #客戶端設(shè)置 port=3306 socket=/data/mysql/data/mysql.sock default-character-set=utf8mb4
mysqld 端配置
# 服務(wù)端文件配置 [mysqld] # mysql 服務(wù)啟動時(shí)的用戶 user=mysql # 服務(wù)啟動的默認(rèn)端口 port=3306 #mysql的客戶端和服務(wù)端之間建立通信時(shí)需要指定一個(gè)通信stock文件 socket= /data/mysql/data/mysql.sock #mysql服務(wù)的ID,在主從同步時(shí)來標(biāo)記服務(wù)的唯一身份 server-id=1 # 端口的ip綁定,這里和redis的端口綁定類似,如果是0.0.0.0標(biāo)識允許所有的遠(yuǎn)程訪問,127.0.0.1表示只能是本地訪問,如果固定ip則只能接受改ip的遠(yuǎn)程訪問。 bind-address = 0.0.0.0 # linux 中一切皆文件,mysql服務(wù)啟動后會記錄進(jìn)程id到改文件中,用于記錄服務(wù)的運(yùn)行情況 pid-file=/data/mysql/data/mysql.pid #mysql服務(wù)的安裝目錄 basedir=/usr/local/mysql #mysql服務(wù)的數(shù)據(jù)數(shù)據(jù)存放目錄 datadir=/data/mysql/data/ #數(shù)據(jù)庫系統(tǒng)磨人的字符集合排序方式,這里說一下ci和cs的區(qū)別,就是大小寫敏感和不敏感 ci 就是 case ignore cs 就是 case senstive character_set_server=utf8mb4 collation_server=utf8mb4_general_ci
其他設(shè)置
#表名稱和表字段是否區(qū)分大小寫1 表示區(qū)分大小寫,0表示區(qū)分大小寫 lower_case_table_name=1 # 創(chuàng)建新表時(shí)使用的默認(rèn)數(shù)據(jù)庫引擎 default-storage-engine=INNODB
sql_mode
sql_mode
是 mysql
中一個(gè)重要的配置項(xiàng),其定義了支持的 sql
語法和數(shù)據(jù)校驗(yàn)規(guī)則。
- sql 模式設(shè)置: ANSI 是寬松模式,對數(shù)據(jù)插入進(jìn)行校驗(yàn),如果不符合數(shù)據(jù)定義和長度,對數(shù)據(jù)類型調(diào)整或者截?cái)啾4?,給出 warning 警告。STRICT_TRANS_TABLES 嚴(yán)格模式,嚴(yán)格校驗(yàn)保證錯(cuò)誤格式的數(shù)據(jù)不能插入,報(bào) error 錯(cuò)誤,只對事務(wù)操作起作用,非事務(wù)操作不起作用。TRADITIONAL 嚴(yán)格模式,在插入數(shù)據(jù)時(shí)進(jìn)行嚴(yán)格校驗(yàn),保證錯(cuò)誤數(shù)據(jù)不能插入并報(bào) error 錯(cuò)誤。作用于事務(wù)時(shí)會回滾事務(wù)。
- 是否接受日期格式為 0。NO_ZERO_DATE 是否允許 '0000-00-00' 日期被插入。如果不啟用,則 '0000-00-00' 允許插入沒有 waring 提示信息。如果啟用配置則 '0000-00-00' 允許插入有提示信息。如果是嚴(yán)格模式且啟用配置,則'0000-00-00' 不允許插入并產(chǎn)生 error 錯(cuò)誤。但是 insert ingore 或者 update ignore 的 sql 除外。NO_ZERO_IN_DATE 和 NO_ZERO_DATE 是類似的,只不過接受的日期為 '2010-00-01' 或者 '2010-01-00', 而不是 '0000-00-00'。
- ONLY_FULL_GROUP_BY 該模式下對于 group by 聚合操作,在 select 中的列,如果沒有在 group by 中出現(xiàn),將會認(rèn)為這個(gè) sql 不合法。
- NO_AUTO_CREATE_USER 禁止創(chuàng)建密碼為空的用戶。
- NO_ENGINE_SUBSTITUTION 當(dāng)存儲引擎禁用或者未解析時(shí),使用存儲引擎就會報(bào)錯(cuò)。
- NO_AUTO_VALUE_ON_ZERO 自增數(shù)據(jù)列設(shè)置,默認(rèn)情況下,插入 0 或者 null 則代表下一個(gè)自增值,如果用戶希望插入數(shù)據(jù)為 0 但是該列為自增,此時(shí)需要設(shè)置改配置。
- Mysql InnoDB 的內(nèi)存結(jié)構(gòu) 在 insert 或者 update 數(shù)據(jù)時(shí),如果數(shù)據(jù)除零,則產(chǎn)生錯(cuò)誤而非警告。
常用的配置如下所示:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
總結(jié)
本文講述了 mysql
的主要配置文件的作用,innodb
引擎是 mysql
數(shù)據(jù)庫中的重要部分,關(guān)于這一塊兒的知識,前文已經(jīng)分享過了,不再贅述,感興趣的可以移步這里 Mysql InnoDB 的內(nèi)存結(jié)構(gòu)詳情
到此這篇關(guān)于Mysql 文件配置解析的文章就介紹到這了,更多相關(guān)Mysql 文件配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql中異常錯(cuò)誤ERROR:2002的解決方法
最近在啟動mysql的時(shí)候發(fā)現(xiàn)mysql報(bào)錯(cuò)了,錯(cuò)誤代碼是2002,通過查找相關(guān)的資料發(fā)現(xiàn)是var/lib/mysql 的訪問權(quán)限問題,所以這篇文章主要介紹了mysql中異常錯(cuò)誤ERROR:2002的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03學(xué)習(xí)mysql之后的一點(diǎn)總結(jié)(基礎(chǔ))
學(xué)習(xí)mysql之后的一點(diǎn)總結(jié),比較適合新手朋友2012-05-05mysql隨機(jī)抽取一定數(shù)量的記錄實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于mysql隨機(jī)抽取一定數(shù)量的記錄實(shí)例相關(guān)知識點(diǎn),有需要的朋友們可以學(xué)習(xí)下。2019-09-09