Mysql的啟動(dòng)其實(shí)不算復(fù)雜,我的理解就是讀取配置文件,傳遞參數(shù),啟動(dòng)。

說的比較簡(jiǎn)單,其實(shí)這里是有關(guān)部署的事情,配置文件的部署需要了解,我們看看默認(rèn)的my.cnf的說明:
引用:
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /Data/apps/mysql/var) or
# ~/.my.cnf to set user-specific options.

# www.aslibra.com by hqlulu
也就是說,放在 /etc/my.cnf 是服務(wù)器的全局設(shè)置
然后是啟動(dòng)的數(shù)據(jù)庫(kù)的my.cnf,然后是用戶目錄的 .my.cnf 文件
最后其實(shí)就是啟動(dòng)命令指定的參數(shù),下面自己可以找到方法一步一步驗(yàn)證,我們用port的變化來說明:

1 默認(rèn)的一般啟動(dòng)形式是如下:
復(fù)制內(nèi)容到剪貼板
代碼:
/Data/apps/mysql/bin/mysqld_safe --user=mysql &

停止命令:

mysqladmin   -u   root   -pyourpassword     shutdown  
如果沒有 /etc/my.cnf 的情況下,默認(rèn)是打開mysql安裝目錄的 var文件夾,讀取權(quán)限配置
如果沒有相應(yīng)的表,那就會(huì)提示出錯(cuò):
引用:
080502 04:12:23  mysqld started
080502  4:12:23 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
080502 04:12:23  mysqld ended
可以使用bin/mysql_install_db新裝一個(gè)數(shù)據(jù)庫(kù)默認(rèn)庫(kù)
如果是表的所有者不是mysql,那會(huì)提示:
引用:
080502 04:15:37  mysqld started
080502  4:15:37 [ERROR] /Data/apps/mysql/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080502  4:15:37 [ERROR] /Data/apps/mysql/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080502  4:15:37 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
080502 04:15:37  mysqld ended
啟動(dòng)后,看到使用的是 3306端口號(hào)

2 如果復(fù)制一個(gè)配置文檔到 /etc/my.cnf 并且修改port參數(shù)試試:
復(fù)制內(nèi)容到剪貼板
代碼:
[mysqld]
port            = 3307
socket          = /tmp/mysql.sock
同樣語(yǔ)句啟動(dòng)后,是3307端口號(hào)

3 復(fù)制一個(gè)文件到 var 目錄
復(fù)制內(nèi)容到剪貼板
代碼:
[mysqld]
port            = 3308
socket          = /tmp/mysql.sock
同樣語(yǔ)句啟動(dòng)后,是3308端口號(hào)

4 復(fù)制一個(gè)my.cnf到用戶mysql的根目錄

cat /etc/passwd 知道:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

復(fù)制一個(gè)到 /var/lib/mysql/.my.cnf
復(fù)制內(nèi)容到剪貼板
代碼:
[mysqld]
port            = 3309
socket          = /tmp/mysql.sock
同樣語(yǔ)句啟動(dòng)后,是3308端口號(hào),看來這個(gè)不太成立

5 指定配置文件

復(fù)制一個(gè) my_setting.cnf ,修改為3340
復(fù)制內(nèi)容到剪貼板
代碼:
/Data/apps/mysql/bin/mysqld_safe --defaults-file=/Data/apps/mysql/var/my_setting.cnf --user=mysql &
注意,指定配置文件的參數(shù)應(yīng)該需要在第一個(gè)位置出現(xiàn),互換兩個(gè)參數(shù)的位置會(huì)出錯(cuò)了,啟動(dòng)后,確實(shí)是3340

6 修改啟動(dòng)參數(shù)
復(fù)制內(nèi)容到剪貼板
代碼:
/Data/apps/mysql/bin/mysqld_safe --defaults-file=/Data/apps/mysql/var/my_setting.cnf --user=mysql --port=3341 &
啟動(dòng)后是 3341端口

阿權(quán)的總結(jié):

1 mysql有默認(rèn)的一些參數(shù),如果沒有指定,則取默認(rèn)值
2 mysql嘗試讀取 /etc/my.cnf 做默認(rèn)值
3 mysql嘗試讀取數(shù)據(jù)目錄的 my.cnf ,取代相應(yīng)的值
4 mysql的用戶目錄似乎無效,不太清楚呢
5 mysql啟動(dòng)參數(shù)可以指定配置文件位置,優(yōu)先級(jí)次高
6 也可以直接指定具體的參數(shù),優(yōu)先級(jí)最高

 
./mysql -umarduk -pmarduk cnaudit <cnbak0902.sql 
 
mysql>source d:\aiker_db.sql