title: mysql啟動
date: 2020-11-13 20:39:13
categories: 數(shù)據(jù)庫
tags:
- mysql
description: mysql的一些啟動命令介紹
mysql服務(wù)器可執(zhí)行文件非常多竣稽,大多都在安裝目錄下的bin目錄
mysqld
這個可執(zhí)行文件就代表著MySQL服務(wù)器程序乌妒,運行這個可執(zhí)行文件就可以直接啟動一個服務(wù)器進程豆村。但這個命令不常用座硕,我們繼續(xù)往下看更牛逼的啟動命令-
mysqld_safe
mysqld_safe是一個啟動腳本意乓,它會間接的調(diào)用mysqld,而且還順便啟動了另外一個監(jiān)控進程悼院,這個監(jiān)控進程在服務(wù)器進程掛了的時候淮逊,可以幫助重啟它。另外蚁趁,使用mysqld_safe啟動服務(wù)器程序時裙盾,它會將服務(wù)器程序的出錯信息和其他診斷信息重定向到某個文件中,產(chǎn)生出錯日志,這樣可以方便我們找出發(fā)生錯誤的原因番官。./bin/mysqld_safe --user=mysql & 200331 20:16:57 mysqld_safe Starting mysqld daemon with databases from /home/software/mysql/data #測試 bin/mysqladmin variables bin/mysqladmin version
mysqld_multi
其實我們一臺計算機上也可以運行多個服務(wù)器實例庐完,也就是運行多個MySQL服務(wù)器進程。mysql_multi可執(zhí)行文件可以對每一個服務(wù)器進程的啟動或停止進行監(jiān)控徘熔。這個命令的使用比較復(fù)雜门躯,本書主要是為了講清楚MySQL服務(wù)器和客戶端運行的過程,不會對啟動多個服務(wù)器程序進行過多嘮叨酷师。
mysqld后綴的命令都是服務(wù)器相關(guān)的命令讶凉,mysql后綴的命令都是客戶端相關(guān)的命令
-
mysqladmin
也是一種客戶端,不過是用來管理的特殊客戶端山孔,比如查看服務(wù)器狀態(tài)懂讯、關(guān)閉服務(wù)器、創(chuàng)建或刪除數(shù)據(jù)庫台颠,重新加載授權(quán)表等# 關(guān)閉服務(wù)器 bin/mysqladmin -u root shutdown
mysql客戶端程序
mysql -h主機名 -u用戶名 -p密碼
如果服務(wù)器進程監(jiān)聽的端口號不是默認的3306褐望,我們也可以在使用mysql啟動客戶端程序時使用-P參數(shù)(大寫的P,小寫的p是用來指定密碼的)來指定需要連接到的端口號
像 h串前、u譬挚、p 這樣名稱只有一個英文字母的參數(shù)稱為短形式的參數(shù),使用時前邊需要加單短劃線酪呻,像 host减宣、user、password 這樣大于一個英文字母的參數(shù)稱為長形式的參數(shù)玩荠,使用時前邊需要加雙短劃線漆腌。大寫的P指定端口,小寫的p是用來指定密碼的
服務(wù)器處理客戶端的請求
從圖中我們可以看出阶冈,服務(wù)器程序處理來自客戶端的查詢請求大致需要經(jīng)過三個部分闷尿,分別是連接管理、解析與優(yōu)化女坑、存儲引擎填具。下邊我們來詳細看一下這三個部分都干了什么。
連接管理
客戶端進程可以采用TCP/IP匆骗、命名管道或共享內(nèi)存劳景、Unix域套接字這幾種方式之一來與服務(wù)器進程建立連接,每當(dāng)有一個客戶端進程連接到服務(wù)器進程時碉就,服務(wù)器進程都會創(chuàng)建一個線程來專門處理與這個客戶端的交互(采用線程池模式)查詢緩存
MySQL服務(wù)器會把剛剛處理過的查詢請求和結(jié)果緩存起來盟广,如果下一次有一模一樣的請求過來,直接從緩存中查找結(jié)果就好了瓮钥,就不用再傻呵呵的去底層的表中查找了筋量,不同客戶端之間共享語法解析
如果查詢緩存沒有命中烹吵,接下來就需要進入正式的查詢階段了。因為客戶端程序發(fā)送過來的請求只是一段文本而已桨武,所以MySQL服務(wù)器程序首先要對這段文本做分析肋拔,判斷請求的語法是否正確,然后從文本中將要查詢的表呀酸、各種查詢條件都提取出來放到MySQL服務(wù)器內(nèi)部使用的一些數(shù)據(jù)結(jié)構(gòu)上來查詢優(yōu)化
語法解析之后只损,服務(wù)器程序獲得到了需要的信息,但光有這些是不夠的七咧,MySQL的優(yōu)化程序會對我們的語句做一些優(yōu)化跃惫,如外連接轉(zhuǎn)換為內(nèi)連接、表達式簡化艾栋、子查詢轉(zhuǎn)為連接吧啦吧啦的一堆東西爆存。優(yōu)化的結(jié)果就是生成一個執(zhí)行計劃,表明了應(yīng)該使用哪些索引進行查詢蝗砾,表之間的連接順序是啥樣的先较。我們可以使用EXPLAIN語句來查看某個語句的執(zhí)行計劃。
存儲引擎
為了管理方便悼粮,人們把連接管理闲勺、查詢緩存、語法解析扣猫、查詢優(yōu)化這些并不涉及真實數(shù)據(jù)存儲的功能劃分為MySQL server的功能菜循,把真實存取數(shù)據(jù)的功能劃分為存儲引擎的功能。
各種不同的存儲引擎向上邊的MySQL server層提供統(tǒng)一的調(diào)用接口(也就是存儲引擎API)申尤,包含了幾十個底層函數(shù)癌幕,像”讀取索引第一條內(nèi)容”、”讀取索引下一條內(nèi)容”昧穿、”插入記錄”等等勺远。
mysql> mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
- 創(chuàng)建表時指定存儲引擎
CREATE TABLE 表名(
建表語句;
) ENGINE = 存儲引擎名稱;
啟動選項和配置文件
- 第一種:在啟動服務(wù)器程序名時加入選項,--啟動選項1[=值1] --啟動選項2[=值2] ... --啟動選項n[=值n]
mysqld -P3307
使用短形式指定啟動選項時时鸵,選項名和選項值之間可以沒有間隙胶逢,或者用空白字符隔開(-p選項有些特殊,-p和密碼值之間不能有空白字符)饰潜,也就是說上邊的命令形式和下邊的是等價的:
mysqld -P 3307
第二種:修改配置文件
在類unix操作系統(tǒng)中初坠,Mysql會按照下列路徑來尋找配置文件:
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cn
defaults-extra-file
~/.my.cnf
~/.mylogin.cnf
從上往下,優(yōu)先級依次增高-
配置文件中的內(nèi)容
置文件中的啟動選項被劃分為若干個組囊拜,每個組有一個組名某筐,用中括號[]擴起來,像這樣:[mysqld] (具體的啟動選項...) [mysqld_safe] (具體的啟動選項...) [client] (具體的啟動選項...) [mysql] (具體的啟動選項...)