mysqld
mysql
mysqld
這個可執行文件就表明着MySql
服務器程序,運行這個可執行文件就能夠直接啓動一個服務器進程。mysqld_safe
程序員
mysqld_safe
是一個啓動腳本,它會間接的調用mysql
,並且還順便啓動了另一個監控服務,這個監控進程在服務器進程掛了的時候,能夠幫助重啓它。另外,使用mysqld_safe
啓動服務器程序時,它會將服務器程序的出錯信息和其餘診斷信息重定向到某個文件中,產生出錯誤日誌,這樣能夠方便咱們找出發生錯誤的緣由。mysql.server
sql
mysql.server
也是一個啓動腳本,它會間接的調用mysql_safe
,在調用mysql.server
時在後邊指定start
參數就能夠啓動服務器程序了:mysql.server start
mysqld_multi
windows
mysqld_multi
能夠對每個服務器進程的啓動或中止進行監控。tips:
windows下,命令:"完整的可執行文件路徑" --install [-manual] [服務名]
能夠指定程序註冊爲windows服務。
mysql -h主機名 -u用戶名 -p密碼
參數名 | 含義 |
---|---|
-h |
計算機的域名或者IP地址 |
-u |
用戶名 |
-p |
密碼 |
運行着的服務器程序和客戶端程序本質上都是計算機上的一個進程,因此客戶端進程向服務器進程發送請求並獲得回覆的過程本質上是一個進程間通訊的過程!
MySql
支持下邊三種客戶端進程和服務器進程的通訊方式。
TCP/IP緩存
mysqld -P3307
,-P
能夠改變MySql
服務器監聽哪一個端口mysql -p3307
,-P
可讓客戶端去鏈接服務器的指定端口命名管道和共享內存服務器
windows
用戶可用Unix域套接字文件網絡
localhost
,或者指定了--protocal=socket
的啓動參數,那服務器程序和客戶端程序之間就能夠經過Unix域套接字文件來進行通訊了。MySql服務器程序默認監聽的Unix域套接字文件路徑爲/tmp/mysql.sock
,客戶端程序也默認鏈接到這個Unix域套接字文件。若是咱們想改變這個默認路徑,能夠在啓動服務器程序時指定socket參數mysqld --socket=/tmp/a.txt
mysql -hlocalhost -uroot --socket=/tmp/a.txt -p
客戶端進程向服務器進程發送一段文本(MySQL語句),服務器進程處理後再向客戶端進程發送一段文本(處理結果)
。大體是如下三個部分socket
鏈接管理:性能
解析與優化優化
MySql
的優化程序會對咱們的語句作一些優化存儲引擎
blackhole
、MyIsam
、InnoDB
...SHOW ENGINES;
CREATE TABLE 表名( 建表語句; ) ENGINE = 存儲引擎名稱;
ALTER TABLE 表名 ENGINE = 存儲引擎名稱;
在命令行上使用選項,格式:
--啓動選項1[=值1] --啓動選項2[=值2] ... --啓動選項n[=值n]
mysqld --skip-networking
:客戶端不能用-h
(TCP/IP
)進行網絡通訊mysqld --default-storage-engine=MyISAM
:把默認引擎設置爲MyISAM
在命令行中設置啓動選項只對當次啓動生效
Windows操做系統的配置文件
路徑名 | 備註 |
---|---|
%WINDIR%my.ini, %WINDIR%my.cnf | WINDIR一般是C:WINDOWS |
C:my.ini, C:my.cnf | |
BASEDIRmy.ini, BASEDIRmy.cnf | BASEDIR指的是MySQL安裝目錄的路徑 |
defaults-extra-file | 命令行指定的額外配置文件路徑 |
%APPDATA%MySQL.mylogin.cnf | 登陸路徑選項(僅限客戶端) |
列表中最後一個名爲.mylogin.cnf
配置文件有點兒特殊,它不是一個純文本文件(其餘的配置文件都是純文本文件),而是使用mysql_config_editor
實用程序建立的加密文件。文件中只能包含一些用於啓動客戶端軟件時鏈接服務器的一些選項,包括host
、user
、password
、port
和socket
。並且它只能被客戶端程序所使用。
類Unix操做系統中的配置文件
路徑名 | 備註 |
---|---|
/etc/my.cnf | |
/etc/mysql/my.cnf | |
SYSCONFDIR/my.cnf | CMake 構建MySQL 時使用SYSCONFDIR 選項指定的目錄 |
$MYSQL_HOME/my.cnf | 特定於服務器的選項(僅限服務器) |
defaults-extra-file | 命令行指定的額外配置文件路徑 |
~/.my.cnf | 用戶特定選項 |
~/.mylogin.cnf | 用戶特定的登陸路徑選項(僅限客戶端) |
配置文件的內容
[server] option1 #這是option1,該選項不須要選項值 option2 = value2 #這是option2,該選項須要選項值 [mysqld] (具體的啓動選項...) [mysqld_safe] (具體的啓動選項...) [client] (具體的啓動選項...) [mysql] (具體的啓動選項...) [mysqladmin] (具體的啓動選項...)
若是咱們在多個配置文件中設置了相同的啓動選項,那以最後一個配置文件中的爲準
啓動命令 | 類別 | 能讀取的組 |
---|---|---|
mysqld | 啓動服務器 | [mysqld]、[server] |
mysqld_safe | 啓動服務器 | [mysqld]、[server]、[mysqld_safe] |
mysql.server | 啓動服務器 | [mysqld]、[server]、[mysql.server] |
mysql | 啓動客戶端 | [mysql]、[client] |
mysqladmin | 啓動客戶端 | [mysqladmin]、[client] |
mysqldump | 啓動客戶端 | [mysqldump]、[client] |
MySql
到默認的路徑下搜索配置文件(就是上表中列出的那些),能夠在命令行指定defaults-file
選項,好比這樣(以UNIX
系統爲例):mysqld --defaults-file=/tmp/myconfig.txt
。若是文件不存在或沒法訪問,則會發生錯誤。若是同一個啓動選項既出如今命令行中,又出如今配置文件中,那麼以命令行中的啓動選項爲準
1.系統變量簡介MySql
服務器程序運行過程當中會用到許多影響程序行爲的變量
SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
2.設置系統變量
服務器程序運行過程當中設置
設置不一樣做用範圍的系統變量
GLOBAL
:全局變量,影響服務器的總體操做。SESSION
:會話變量,影響某個客戶端鏈接的操做。(注:SESSION
有個別名叫LOCAL
)服務器會爲每一個鏈接的客戶端維護一組會話變量
設置:
SET [GLOBAL|SESSION] 系統變量名 = 值;
SET GLOBAL default_storage_engine = MyISAM
SET [@@(GLOBAL|SESSION).]var_name = XXX;
SET @@GLOBAL.default_storage_engine = MyISAM
SET default_storage_engine = MyISAM
若是在設置系統變量的語句中省略了做用範圍,默認的做用範圍就是
SESSION
若是某個客戶端改變了某個系統變量在GLOBAL
做用範圍的值,並不會影響該系統變量在當前已經鏈接的客戶端做用範圍爲SESSION
的值,只會影響後續連入的客戶端在做用範圍爲SESSION
的值。
3.啓動選項和系統變量的區別
- 大部分的系統變量均可以被看成啓動選項傳入 - 有些系統變量是在程序運行過程當中自動生成的,是不能夠看成啓動選項來設置,好比`auto_increment_offset`、`character_set_client` - 有些啓動選項也不是系統變量,好比`defaults-file`
4.狀態變量
爲了讓咱們更好的瞭解服務器程序的運行狀況,MySQL服務器程序中維護了好多關於程序運行狀態的變量。因爲狀態變量是用來顯示服務器程序運行情況的,因此它們的值只能由服務器程序本身來設置,咱們程序員是不能設置的。如:Threads_connected