Mariadb/MySQL配置文件參數篇
html
做者:尹正傑 node
版權聲明:原創做品,謝絕轉載!不然將追究法律責任。mysql
一.針對MySQL主程序mysqld定義參數[mysqld] sql
1>.skip-networking=1數據庫
關閉網絡鏈接,只偵聽本地客戶端, 全部和服務器的交互都經過一個socket實現,socket的配置存放在"/var/lib/mysql/mysql.sock",可在/etc/my.cnf修改
[root@node102.yinzhengjie.org.cn ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::22 :::* [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# grep -v ^# /etc/my.cnf #關閉網絡,將"skip-networking"的Value設置爲1便可。 [mysqld] skip-networking #關閉網絡,此處咱們只須要把該屬性寫在這裏就表示啓用了,除非你顯示指定其值爲0(表示不啓用),若是咱們這樣寫默認是啓用了 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid !includedir /etc/my.cnf.d [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# systemctl restart mariadb #重啓服務,發現MySQL服務在正常運行可是並未對外暴漏端口。 [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# ps aux | grep mysql | grep -v grep #MySQL服務處於正常運行狀態 root 8556 0.0 0.1 234060 4184 pts/0 S+ 07:50 0:00 mysql mysql 10132 0.0 0.0 113308 1624 ? Ss 10:38 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr mysql 10306 0.0 2.0 968688 81204 ? Sl 10:38 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/li b64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sockroot 10342 0.0 0.1 234060 4180 pts/1 S+ 10:38 0:00 mysql -uroot -px xxxxxxxxx [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 128 :::22 :::* [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# mysql -uroot -pyinzhengjie #本機基於socket文件依舊是能夠正常訪問的喲~ Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.64-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> status -------------- mysql Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1 Connection id: 2 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server: MariaDB Server version: 5.5.64-MariaDB MariaDB Server Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 19 sec Threads: 1 Questions: 4 Slow queries: 0 Opens: 0 Flush tables: 2 Open tables: 26 Queries per second avg: 0.210 -------------- MariaDB [(none)]>
2>.datadir安全
指定MySQL數據庫存放數據的目錄。
3>.socket服務器
指定socket文件路徑。
4>.symbolic-links網絡
是否支持軟鏈接,若不支持指定的路徑不能爲軟鏈接。
5>.innodb_file_per_tablesocket
該參數在mysql5.6.6及其後續版本默認開啓,開啓該參數的時候,Innodb將每一個新建立的表的數據及索引存儲在一個獨立的.ibd文件裏,而不是系統的表空間。當這些innodb表被刪除或清空的時候,存儲空間會被回收。 開啓innodb_file_per_table(=ON): 在ALTER TABLE操做重建表的狀況下,會將innodb表從系統共享表空間移動到獨立的.ibd文件。 不開啓innodb_file_per_table(=OFF): innodb會將全部表及索引的數據存儲在構成系統表空間的ibdata文件。這樣會下降文件系統操做的性能開銷,例如DROP TABLE 或 TRUNCATE TABLE。它最適合於將整合磁盤都用於存儲mysql數據的狀況,由於系統表空間不會收縮,全部的數據庫都在一個空間實例裏面。當innodb_file_per_table=OFF的時候,應避免在空間受限的系統表空間裏導入大量臨時數據。 innodb_file_per_table 可經過SET GLOBAL動態的修改成ON或OFF,也能夠在my.cnf中作永久性修改,在my.cnf中修改後生效的話須要重啓mysqld服務。
6>.skip_name_resolveide
禁止主機名解析,建議使用。他會將IP地址解析成主機名而這個過程依賴於DNS服務,而你的網絡中沒有作名稱解析可能會致使網絡鏈接很是慢。 博主推薦閱讀: https://www.cnblogs.com/ivictor/p/5311607.html
7>.character-set-server
指定服務端的字符集,例如:character-set-server=utf8mb4
8>.innodb_file_per_table
Innodb存儲引擎可將全部數據存放於ibdata*的共享表空間,也可將每張表存放於獨立的.ibd文件的獨立表空間. 共享表空間: 某一個數據庫的全部的表數據,索引文件所有放在一個文件中,默認這個共享表空間的文件路徑在data目錄下。 默認的文件名爲:ibdata1 初始化爲10M。 優勢: 能夠將表空間分紅多個文件存放到各個磁盤上(表空間文件大小不受表大小的限制,如一個表能夠分佈在不一樣的文件上)。數據和文件放在一塊兒方便管理。 缺點: 全部的數據和索引存放到一個文件中,雖然能夠把一個大文件分紅多個小文件,可是多個表及索引在表空間中混合存儲,這樣對於一個表作了大量刪除操做後表空間中將會有大量的空隙,特別是對於統計分析,日值系統這類應用最不適合用共享表空間。 獨立表空間: 每個表都將會生成以獨立的文件方式來進行存儲,每個表都有一個.frm表描述文件,還有一個.ibd文件。 其中這個文件包括了單獨一個表的數據內容以及索引內容,默認狀況下它的存儲位置也是在表的位置之中。 優勢: 1>.每一個表都有自已獨立的表空間。 2>.每一個表的數據和索引都會存在自已的表空間中。 3>.能夠實現單表在不一樣的數據庫中移動。 4>.空間能夠回收(除drop table操做處,表空不能自已回收) Drop table操做自動回收表空間,若是對於統計分析或是日值表,刪除大量數據後能夠經過:alter table TableName engine=innodb;回縮不用的空間。 對於使innodb-plugin的Innodb使用turncate table也會使空間收縮。 對於使用獨立表空間的表,無論怎麼刪除,表空間的碎片不會太嚴重的影響性能,並且還有機會處理。 缺點: 1>.單表增長過大,如超過100個G。 2>.相比較之下,使用獨佔表空間的效率以及性能會更高一點。 開啓獨立表空間,在配置文件(my.cnf)的[mysqld]中設置: innodb_file_per_table = 1(MariaDB 10.2.x版本默認是開啓的喲~)
9>.skip-grant-tables
忽略受權表,這意味着將全部用戶的受權操做給取消了。換句話說,關閉MySQL服務器的認證,從而能夠重置root的密碼。
10>.userstat
開啓查看索引使用工具。
11>.更多服務器參數信息
因爲Mysqld參數有不少,我這裏就不能一一列舉啦,我後面博客中也整理了不少參數,但並無統一羅列再次,不過萬變不離其宗,更多服務器參數我們均可以在官網查閱到。官方給出了最權威的說明。 博主推薦閱讀: https://www.cnblogs.com/yinzhengjie/p/11758208.html https://dev.mysql.com/doc/refman/5.7/en/server-option-variable-reference.html https://mariadb.com/kb/en/library/full-list-of-mariadb-options-system-and-status-variables/
二.針對MySQL安全性的參數[mysqld_safe]
1>.pid-file
指定進程的pid號存放路徑。
案例:
pid-file = /mysql/3306/pid/mariadb.pid
2>.log-error
存放錯誤日誌文件。
案例:
log-error = /mysql/3306/log/mariadb.log
3>.
三.針對MySQL多實例參數[mysqld_multi]
四.針對MySQL客戶端參數[mysql]
1>.default-character-set
指定客戶端默認字符集,例如:default-character-set=utf8mb4
2>.safe-updates
當用戶使用UPDATE或者DELETE語句時須要加WHRER關鍵詞進行過濾,不然沒法對錶中的數據進行修改。
若是用戶沒有加WHERE繼續過濾會有以下報錯信息:
"ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column"
3>.
五.針對MySQL備份相關參數[mysqldump]
六.統一爲服務器使用[server]
七.統一爲客戶端使用[client]