Mysql?文件配置解析
前言:
mysql數(shù)據(jù)庫在日常工作開發(fā)中經(jīng)常用到的存儲設備, 之前已經(jīng)分享了面試過程中經(jīng)常被問到的mysql優(yōu)化的內(nèi)容,本期就結(jié)合mysql的配置文件進行分析。這里需要說明的是, 在windows系統(tǒng)的配置文件為 my.ini, 而在Linux上的配置文件為my.cnf。
client 端配置
在客戶端的配置文件 主要包括 mysql 的服務端口,已經(jīng) mysql 連接通信文件,以及客戶端連接的字符集。
[client] #客戶端設置 port=3306 socket=/data/mysql/data/mysql.sock default-character-set=utf8mb4
mysqld 端配置
# 服務端文件配置 [mysqld] # mysql 服務啟動時的用戶 user=mysql # 服務啟動的默認端口 port=3306 #mysql的客戶端和服務端之間建立通信時需要指定一個通信stock文件 socket= /data/mysql/data/mysql.sock #mysql服務的ID,在主從同步時來標記服務的唯一身份 server-id=1 # 端口的ip綁定,這里和redis的端口綁定類似,如果是0.0.0.0標識允許所有的遠程訪問,127.0.0.1表示只能是本地訪問,如果固定ip則只能接受改ip的遠程訪問。 bind-address = 0.0.0.0 # linux 中一切皆文件,mysql服務啟動后會記錄進程id到改文件中,用于記錄服務的運行情況 pid-file=/data/mysql/data/mysql.pid #mysql服務的安裝目錄 basedir=/usr/local/mysql #mysql服務的數(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
其他設置
#表名稱和表字段是否區(qū)分大小寫1 表示區(qū)分大小寫,0表示區(qū)分大小寫 lower_case_table_name=1 # 創(chuàng)建新表時使用的默認數(shù)據(jù)庫引擎 default-storage-engine=INNODB
sql_mode
sql_mode 是 mysql 中一個重要的配置項,其定義了支持的 sql 語法和數(shù)據(jù)校驗規(guī)則。
- sql 模式設置: ANSI 是寬松模式,對數(shù)據(jù)插入進行校驗,如果不符合數(shù)據(jù)定義和長度,對數(shù)據(jù)類型調(diào)整或者截斷保存,給出 warning 警告。STRICT_TRANS_TABLES 嚴格模式,嚴格校驗保證錯誤格式的數(shù)據(jù)不能插入,報 error 錯誤,只對事務操作起作用,非事務操作不起作用。TRADITIONAL 嚴格模式,在插入數(shù)據(jù)時進行嚴格校驗,保證錯誤數(shù)據(jù)不能插入并報 error 錯誤。作用于事務時會回滾事務。
- 是否接受日期格式為 0。NO_ZERO_DATE 是否允許 '0000-00-00' 日期被插入。如果不啟用,則 '0000-00-00' 允許插入沒有 waring 提示信息。如果啟用配置則 '0000-00-00' 允許插入有提示信息。如果是嚴格模式且啟用配置,則'0000-00-00' 不允許插入并產(chǎn)生 error 錯誤。但是 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),將會認為這個 sql 不合法。
- NO_AUTO_CREATE_USER 禁止創(chuàng)建密碼為空的用戶。
- NO_ENGINE_SUBSTITUTION 當存儲引擎禁用或者未解析時,使用存儲引擎就會報錯。
- NO_AUTO_VALUE_ON_ZERO 自增數(shù)據(jù)列設置,默認情況下,插入 0 或者 null 則代表下一個自增值,如果用戶希望插入數(shù)據(jù)為 0 但是該列為自增,此時需要設置改配置。
- Mysql InnoDB 的內(nèi)存結(jié)構(gòu) 在 insert 或者 update 數(shù)據(jù)時,如果數(shù)據(jù)除零,則產(chǎn)生錯誤而非警告。
常用的配置如下所示:
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)文章
LNMP下使用命令行導出導入MySQL數(shù)據(jù)庫的方法
這篇文章主要介紹了LNMP下使用命令行導出導入MySQL數(shù)據(jù)庫的方法,需要的朋友可以參考下2016-09-09
Mysql更換MyISAM存儲引擎為Innodb的操作記錄總結(jié)
下面小編就為大家?guī)硪黄狹ysql更換MyISAM存儲引擎為Innodb的操作記錄總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
MySQL 數(shù)據(jù)庫跨操作系統(tǒng)的最快遷移方法
原始的是Windows 2003下的32位的MySQL數(shù)據(jù)庫, 新的服務器是Sun的64位的小型機,64位的MySQL數(shù)據(jù)庫。2009-02-02
mysql中根據(jù)已有的表來創(chuàng)建新表的三種方式(最新推薦)
這篇文章主要介紹了mysql中根據(jù)已有的表來創(chuàng)建新表的三種方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07

