MySQL 的啟動選項和系統(tǒng)變量實例詳解
本文實例講述了MySQL 的啟動選項和系統(tǒng)變量。分享給大家供大家參考,具體如下:
MySQL的配置信息可以通過兩種方式實現(xiàn),一種是命令行形式,在啟動MySQL服務(wù)時后邊帶上相關(guān)配置參數(shù),此種方式會在MySQL重啟后失效。另外一種是通過寫入配置文件,如my.cnf,啟動或者重啟MySQL服務(wù)都會生效,此種方式是永久生效。啟動選項命令行在MySQL服務(wù)命令啟動時,帶上配置參數(shù)啟動方式可參考這篇:MySQL 的啟動和連接方式
命令格式:啟動命令 --啟動選項1[=值1] --啟動選項2[=值2] ... --啟動選項n[=值n]
例如:mysqld --default-storage-engine=MyISAM //設(shè)置默認存儲引擎
錯誤例子:mysqld --default-storage-engine = MyISAM //設(shè)置默認存儲引擎原因:因為啟動項和值之間的等號不能有空格參數(shù)的長形式和短形式配置參數(shù)有長形式和短形式之分,有些作用是一樣的,只是寫法不同而已
--host => -h //主機--port => -P // 端口--user => -u //用戶--password => -p //密碼--version => -V //版本......
例子:mysqld --port=3306mysqld -P3306mysqld -P 3306
注意:密碼不能有空格mysqld -proot配置文件配置文件my.cnf的位置,有可能是以下的幾種,如MySQL服務(wù)啟動時未指定配置文件時,會從以下地方查找讀取并初始化。
* /etc/my.cnf * /etc/mysql/my.cnf* defaults-extra-file //指定的額外配置文件路徑* SYSCONFDIR/my.cnf //cmake編譯安裝情況* $MYSQL_HOME/my.cnf //設(shè)置環(huán)境變量,默認安裝路徑* ~/.my.cnf //用戶特定選項,家目錄* ~/.mylogin.cnf //用戶特定的登錄路徑選項(僅限客戶端),mysql_config_editor修改,不是純文件
注意
1. 在配置文件中指定的啟動選項不允許加--前綴,并且每行只指定一個選項,而且=周圍可以有空白字符2. 如果我們在多個配置文件中設(shè)置了相同的啟動選項,那以最后一個配置文件中的為準3. 如果同一個啟動選項既出現(xiàn)在命令行中,又出現(xiàn)在配置文件中,那么以命令行中的啟動選項為準4. mysqld --defaults-file=/tmp/myconfig.txt //在程序啟動的時候?qū)⒅辉?tmp/myconfig.txt路徑下搜索配置文件。如果文件不存在或無法訪問,則會發(fā)生錯誤
配置組配置文件一共可以以下這些組別:mysqld、mysqld_safe、mysql.server、mysql、mysqladmin、mysqldump,可以針對不同組別進行配置[server](具體的啟動選項...)[mysqld](具體的啟動選項...)[mysqld_safe](具體的啟動選項...)[client](具體的啟動選項...)[mysql](具體的啟動選項...)[mysqladmin](具體的啟動選項...)
例子:[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysqllog-error = /var/log/mysql/error.log# 優(yōu)化配置wait_timeout=10back_log=600key_buffer_size = 2048Mread_buffer_size = 100Mmax_allowed_packet = 1000Mthread_stack = 192Kthread_cache_size = 4myisam-recover-options = BACKUPmax_connections = 4000max_user_connections = 0max_connect_errors = 65535open_files_limit = 10240......
注意1. [server]組下邊的啟動選項將作用于所有的服務(wù)器程序,如mysqld、mysqld_safe、mysql.server2. [client]組下邊的啟動選項將作用于所有的客戶端程序,如mysql、mysqladmin、mysqldump3. 同一個配置文件中多個組的優(yōu)先級,將以最后一個出現(xiàn)的組中的啟動選項為準
系統(tǒng)變量MySQL服務(wù)器程序運行過程中會用到許多影響程序行為的變量,它們被稱為MySQL系統(tǒng)變量。例如:1. 允許同時連入的客戶端數(shù)量用系統(tǒng)變量max_connections表示2. 表的默認存儲引擎用系統(tǒng)變量default_storage_engine表示3. 查詢緩存的大小用系統(tǒng)變量query_cache_size表示......
查看格式:SHOW VARIABLES [LIKE 匹配的模式];
例如:SHOW VARIABLES LIKE ’default_storage_engine’;
mysqld --default-storage-engine=MyISAM --max-connections=10配置文件設(shè)置
[mysqld]default-storage-engine = MyISAMmax-connections = 10......
注意:對于啟動選項來說,如果啟動選項名由多個單詞組成,各個單詞之間用短劃線-或者下劃線_連接起來都可以,但是它對應(yīng)的系統(tǒng)變量的單詞之間必須使用下劃線_連接起來(即通過show查看或set設(shè)置時)
服務(wù)器程序運行過程中設(shè)置系統(tǒng)變量比較牛逼的一點就是,對于大部分系統(tǒng)變量來說,它們的值可以在服務(wù)器程序運行過程中進行動態(tài)修改而無需停止并重啟服務(wù)器不過系統(tǒng)變量有全局和當前會話作用域之分
作用域GLOBAL:全局變量,影響服務(wù)器的整體操作。SESSION:會話變量,影響某個客戶端連接的操作。(別名叫LOCAL)
格式:1. SET [GLOBAL|SESSION] 系統(tǒng)變量名 = 值;2. SET [@@(GLOBAL|SESSION).]var_name = XXX;global
例如:1. SET GLOBAL default_storage_engine = InnoDB;2. SET @@GLOBAL.default_storage_engine = InnoDB;session
例如:1. SET SESSION default_storage_engine = InnoDB;2. SET @@SESSION.default_storage_engine = InnoDB;3. SET default_storage_engine = InnoDB;//默認 session查看
格式:SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];1. SHOW SESSION VARIABLES LIKE ’default_storage_engine’;2. SHOW GLOBAL VARIABLES LIKE ’default_storage_engine’;注意:如果某個客戶端改變了某個系統(tǒng)變量在GLOBAL作用范圍的值,并不會影響該系統(tǒng)變量在當前已經(jīng)連接的客戶端作用范圍為SESSION的值,只會影響后續(xù)連入的客戶端在作用范圍為SESSION的值。補充說明并不是所有系統(tǒng)變量都具有GLOBAL和SESSION的作用范圍
* 有一些系統(tǒng)變量只具有GLOBAL作用范圍,比方說max_connections,表示服務(wù)器程序支持同時最多有多少個客戶端程序進行連接* 有一些系統(tǒng)變量只具有SESSION作用范圍,比如insert_id,表示在對某個包含AUTO_INCREMENT列的表進行插入時,該列初始的值* 有一些系統(tǒng)變量的值既具有GLOBAL作用范圍,也具有SESSION作用范圍,比如我們前邊用到的default_storage_engine,而且其實大部分的系統(tǒng)變量都是這樣的
有些系統(tǒng)變量是只讀的,并不能設(shè)置值比方說version,表示當前MySQL的版本,我們客戶端是不能設(shè)置它的值的,只能在SHOW VARIABLES語句里查看。
啟動選項與系統(tǒng)變量的關(guān)系啟動選項是在程序啟動時我們程序員傳遞的一些參數(shù),而系統(tǒng)變量是影響服務(wù)器程序運行行為的變量* 大部分的系統(tǒng)變量都可以被當作啟動選項傳入* 有些系統(tǒng)變量是在程序運行過程中自動生成的,是不可以當作啟動選項來設(shè)置,比如auto_increment_offset、character_set_client啥的* 有些啟動選項也不是系統(tǒng)變量,比如defaults-file
狀態(tài)變量為了讓我們更好的了解服務(wù)器程序的運行情況,MySQL服務(wù)器程序中維護了好多關(guān)于程序運行狀態(tài)的變量,它們被稱為狀態(tài)變量。比方說Threads_connected表示當前有多少客戶端與服務(wù)器建立了連接,Handler_update表示已經(jīng)更新了多少行記錄
由于狀態(tài)變量是用來顯示服務(wù)器程序運行狀況的,所以它們的值只能由服務(wù)器程序自己來設(shè)置,我們程序員是不能設(shè)置的
查看格式:SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];例如:SHOW STATUS LIKE ’thread%’;
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。
相關(guān)文章:
1. DB2 XML 全文搜索之為文本搜索做準備2. 快速解決mysql導(dǎo)出scv文件亂碼、躥行的問題3. 數(shù)據(jù)庫人員手冊之ORACLE應(yīng)用源碼4. MySQL基礎(chǔ)教程9 —— 函數(shù)之日期和時間函數(shù)5. 用SQL SERVER記錄站點日志6. 輕松解決SQL Server 2005中的常見問題7. MySQL 千萬級數(shù)據(jù)量如何快速分頁8. 如何:創(chuàng)建和運行 CLR SQL Server 存儲過程9. centos 7安裝mysql5.5和安裝 mariadb使用的命令10. MySQL 字符串函數(shù):字符串截取
