Mysql8配置文件
- 修改`my.cnf`----配置持久化鍵(persistence key)
- 配置表名不區分大小寫
修改my.cnf
----配置持久化鍵(persistence key)
MySQL8
初始化數據庫之前配置好這些變量值,初始化數據庫之后可能無法修改
這個值。
# 服務端配置
[mysqld]
######## 數據目錄和基礎配置
# 源碼安裝的mysql8需要指定mysql安裝目錄
# basedir=/usr/local/mysql
# 數據庫文件存儲目錄。
datadir=/var/lib/mysql
# MySQL 進程監聽的 Unix 套接字文件路徑。
socket=/var/run/mysqld/mysqld.sock
# 指定運行 MySQL 進程的用戶身份。
user=mysql
# 指定MySQL服務進程ID文件的路徑
pid-file=/var/run/mysqld/mysqld.pid
# 指定安全文件目錄,只有在該目錄下的文件才可被導入/導出。
secure-file-priv=/var/lib/mysql-files# 設置默認時區為東八區
default-time-zone='+8:00'######### 網絡與連接
# mysql服務綁定的本機哪個IP地址
bind-address=127.0.0.1
# 禁用 DNS 查詢結果緩存,這對于高負載的 MySQL 服務器來說是很重要的,因為它可以減少 DNS 延遲和負載。
host_cache_size=0
# 禁用主機名解析,這也可以提高 MySQL 服務器的性能,因為當客戶端連接到服務器時,會先進行主機名解析,而禁用它可以加速連接進程。
# 只能用IP地址檢查客戶端的登錄,不用主機名
skip-name-resolve
# 最大連接數
max_connections=400
# 最大錯誤連接數
max_connect_errors=1000
wait_timeout = 600 # 非交互連接超時(默認8小時過長)
interactive_timeout = 60 # 交互式連接超時######### 字符集與時區
# 服務端指定字符集
character-set-server=utf8mb4
# 服務端使用的字符序
# https://www.cnblogs.com/chyingp/p/mysql-character-set-collation.html
collation-server=utf8mb4_unicode_ci
# 指定默認時區
default-time-zone='+8:00'# 執行SQL語句時所應該遵守的規則
## STRICT_TRANS_TABLES:當插入數據時,如果出現字段類型不匹配、值超出范圍等情況,將產生嚴格的警告或錯誤。
## NO_ZERO_IN_DATE:防止在日期或日期時間字段中使用0作為數值的填充。
## NO_ZERO_DATE:防止在日期或日期時間字段中插入'0000-00-00'的空白日期格式。
## ERROR_FOR_DIVISION_BY_ZERO:禁用除數為零的操作,并將其視為錯誤。
## NO_ENGINE_SUBSTITUTION:如果需要連接的存儲引擎不存在或不可用,則不自動替換為其他存儲引擎。
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION# ========================
# [InnoDB 性能優化]
# ========================
# 指定InnoDB緩沖池大小,單位為字節
## 關鍵!建議設為物理內存70%-80%(原200M過低)
innodb_buffer_pool_size=700M
innodb_flush_log_at_trx_commit = 1 # 1=嚴格持久化(安全),2=折中性能
innodb_log_buffer_size = 64M # 默認16M,大事務可提升
innodb_flush_method = O_DIRECT # 避免雙緩沖
innodb_thread_concurrency = 0 # 自動調整并發線程# ========================
# [日志配置]
# ========================
# 錯誤日志路徑
log-error=/var/log/mysqld.log
# 指定日志輸出方式,可以為FILE、TABLE等。
log-output=FILE
# 指定是否啟用慢查詢日志:ON開啟
slow_query_log=ON
# 指定慢查詢日志文件的路徑
# slow_query_log_file=/var/log/query.err
# 指定慢查詢的最小時間(s)
long_query_time=2
log_queries_not_using_indexes = ON # 記錄無索引查詢
# 禁用常規查詢日志。
general_log=0
# 指定常規查詢日志文件的路徑
# general_log_file=/var/log/general.err# bin-log二進制日志(主從復制/數據恢復)
# server-id = 1
# log-bin = /var/log/mysql/mysql-bin.log
# binlog_format = ROW# ========================
# [安全與兼容性]
# ========================
# 認證插件
# 使用舊版mysql5的密碼認證插件,支持簡單密碼
## mysql_native_password(傳統模式,兼容舊客戶端)
## caching_sha2_password(MySQL 8.0+ 默認)
## sha256_password
authentication_policy=mysql_native_password
# 指定是否啟用嚴格模式下的時間戳
# TIMESTAMP如果沒有顯示聲明NOT NULL,允許NULL值
## 配置 true| 1 ,false | 0
explicit_defaults_for_timestamp=true# ========================
# [高級性能參數]
# ========================
# SQL數據包發送的大小,如果有BLOB(二進制大對象)建議修改成1G
## BLOB用來存圖像、音頻和視頻等文件
# max_allowed_packet=1G
# 指定單個MySQL包的最大大小,單位為字節(根據BLOB需求調整)
max_allowed_packet=64M
tmp_table_size = 64M # 臨時表內存大小
max_heap_table_size = 64M # 內存表最大值
# 連接緩沖
back_log = 512 # 短連接高并發場景需增大
thread_cache_size = 32 # 減少線程創建開銷# ========================
# [事務隔離參數]
# ========================
# 事務隔離級別設為讀已提交
## mysql默認可重復讀級別repeatable read(此級別下可能參數很多間隙鎖,影響性能)
transaction_isolation=READ-COMMITTED# 初始化連接時的字符集
## 若存在不可控客戶端連接或需強化字符集統一性(如公有云數據庫服務)?
#init_connect='SET NAMES utf8mb4'# 對其他遠程連接的mysql客戶端的配置
[mysql]
# 遠程連接的客戶端指定字符集
default-character-set=utf8mb4# 對localhost的mysql客戶端的配置
[client]
# 客戶端連接 MySQL 的套接字文件路徑。
socket=/var/run/mysqld/mysqld.sock
# 指定MySQL客戶端使用的字符集
default-character-set=utf8mb4# 導入其他配置文件。
# !includedir /etc/mysql/conf.d/
# !includedir /etc/mysql/mysql.conf.d/
檢查mysql配置
# 檢查配置文件語法
mysqld --validate-config
配置表名不區分大小寫
SQL語句和列名不區分大小寫,SQL的表名是默認區分大小寫
的。
可以修改變量來不區分表名大小寫;
0:表示表名區分大小寫;
1:表示表名不區分大小寫,但在存儲和比較時仍保留原始名稱的大小寫形式;
2:表示表名不區分大小寫,并將所有表名轉換為小寫。
編輯/etc/my.cnf
;
或 /etc/mysql/my.cnf
;
或 my.ini
;
或/etc/my.cnf.d/my.cnf
;
在 [mysqld]
段添加:
# 表名不區分大小寫
lower_case_table_names=1