采用yum安裝的mysql, 會直接讀取/etc/my.cnf作為配置文件。
/etc/my.cnf配置文件可以優化,添加內容,以下為核心參數含義:
innodb_buffer_pool # 注:緩沖池位於主內存中,InnoDB用它來緩存被訪問過的表和索引文件,使常用數據可以直接在內存中被處理,從而提升處理速度; innodb_buffer_pool_instance # 注:MySQL5.6.6之后可以調整為多個。表示InnoDB緩沖區可以被划分為多個區域,也可以理解為把innodb_buffer_pool划分為多個實例,可以提高並發性,避免在高並發環境下,出現內存的爭用問題; innodb_data_file_path # 注:該參數可以指定系統表空間文件的路徑和ibdata1文件的大小。默認大小是10MB,這里建議調整為1GB transaction_isolation # 注:MySQL數據庫的事務隔離級別有四種,分別為READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ和SERIALIZABLE。默認采用REPEATABLE-READ(可重復讀) innodb_log_buffer_size # 注:是日志緩沖的大小,InnoDB改變數據的時候,它會把這次改動的記錄先寫到日志緩沖中 innodb_log_file_size # 注:是指Redo log日志的大小,該值設置不宜過大也不宜過小,如果設置太大,實例恢復的時候需要較長時間,如果設置太小,會造成redo log 切換頻繁,產生無用的I/O消耗,影響數據庫性能 innodb_log_files_in_group # 注:redo log文件組中日志文件的數量,默認情況下至少有2個 max_connections # 該參數代表MySQL數據庫的最大連接數 expire_logs_days # 注:該參數代表binlog的過期時間,單位是天 slow_query_log # 注:慢查詢日志的開關,該參數等於1代表開啟慢查詢 long_query_time # 注:慢查詢的時間,某條SQL語句超過該參數設置的時間,就會記錄到慢查詢日志中。單位是秒 binlog_format # 注:該參數代表二進制日志的格式。binlog格式有三種statement、row和mixed。生產環境中使用row這種格式更安全,不會出現跨庫復制丟數據的情況 lower_case_table_names # 注:表名是否區分大小的參數。默認是值為0。0代表區分大小寫,1代表不區分大小寫,以小寫存儲 interactive_timeout # 注:是服務器關閉交互式連接前等待活動的時間,默認是28800s(8小時) wait_timeout # 注:是服務器關閉非交互式連接之前等待活動的時間,默認是28800s(8小時) innodb_flush_method # 注:這個參數影響InnoDB數據文件,redo log文件的打開刷寫模式 log_queries_not_using_indexes # 注:如果運行的SQL語句沒有使用索引,則MySQL數據庫同樣會將這條SQL語句記錄到慢查詢日志文件中
除了核心參數之外,可能在某些場景需要設置其他參數
以下我收集的一個參數配置解釋
對於我們新手而言,不需要急着先調整配置文件參數,首先保持默認即可,在以后啟動再慢慢調整優化即可
注意,再mysql8.0 中,默認端口是3306,默認字符集就是utfmb4, 這些可以不用在配置文件中再進行配置
由於mysql8.0加強了安全性,所以頭次啟動登陸,會生成一個臨時隨機密碼,使用該密碼進行root用戶登陸,然后再修改密碼
如果沒有修改/etc/my.cnf配置文件中關於log路徑的話,臨時密碼會在/var/log/mysqld.log中,按照如下方式查找臨時密碼
然后登陸輸入臨時密碼
然后按照如下方式進行修改密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!'; #定義的密碼
要求密碼包含至少一個大寫字母,一個小寫字母,一個數字和一個特殊字符,並且總密碼長度至少為8個字符。
配置遠程登陸
我們需要使用navicat遠程登陸mysql 8.0,但是由於mysql8.0 加強了安全性,與mysql 5.5之前版本連接加密協議不一致,而且貌似不支持直接root用戶遠程登陸。
所以我們要配置一個遠程登陸用戶user,同時配置加密規則