Mysql的啟動其實不算復雜,我的理解就是讀取配置文件,傳遞參數,啟動。
說的比較簡單,其實這里是有關部署的事情,配置文件的部署需要了解,我們看看默認的my.cnf的說明:
也就是說,放在 /etc/my.cnf 是服務器的全局設置
然后是啟動的數據庫的my.cnf,然后是用戶目錄的 .my.cnf 文件
最后其實就是啟動命令指定的參數,下面自己可以找到方法一步一步驗證,我們用port的變化來說明:
1 默認的一般啟動形式是如下:
如果沒有相應的表,那就會提示出錯:
可以使用bin/mysql_install_db新裝一個數據庫默認庫
如果是表的所有者不是mysql,那會提示:
啟動后,看到使用的是 3306端口號
2 如果復制一個配置文檔到 /etc/my.cnf 并且修改port參數試試:
3 復制一個文件到 var 目錄
4 復制一個my.cnf到用戶mysql的根目錄
cat /etc/passwd 知道:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
復制一個到 /var/lib/mysql/.my.cnf
5 指定配置文件
復制一個 my_setting.cnf ,修改為3340
6 修改啟動參數
阿權的總結:
1 mysql有默認的一些參數,如果沒有指定,則取默認值
2 mysql嘗試讀取 /etc/my.cnf 做默認值
3 mysql嘗試讀取數據目錄的 my.cnf ,取代相應的值
4 mysql的用戶目錄似乎無效,不太清楚呢
5 mysql啟動參數可以指定配置文件位置,優先級次高
6 也可以直接指定具體的參數,優先級最高
說的比較簡單,其實這里是有關部署的事情,配置文件的部署需要了解,我們看看默認的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
然后是啟動的數據庫的my.cnf,然后是用戶目錄的 .my.cnf 文件
最后其實就是啟動命令指定的參數,下面自己可以找到方法一步一步驗證,我們用port的變化來說明:
1 默認的一般啟動形式是如下:
復制內容到剪貼板
如果沒有 /etc/my.cnf 的情況下,默認是打開mysql安裝目錄的 var文件夾,讀取權限配置代碼:
/Data/apps/mysql/bin/mysqld_safe --user=mysql &
停止命令:
mysqladmin -u root -pyourpassword shutdown
如果沒有相應的表,那就會提示出錯:
引用:
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
如果是表的所有者不是mysql,那會提示:
引用:
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
2 如果復制一個配置文檔到 /etc/my.cnf 并且修改port參數試試:
復制內容到剪貼板
同樣語句啟動后,是3307端口號代碼:
[mysqld]
port = 3307
socket = /tmp/mysql.sock
3 復制一個文件到 var 目錄
復制內容到剪貼板
同樣語句啟動后,是3308端口號代碼:
[mysqld]
port = 3308
socket = /tmp/mysql.sock
4 復制一個my.cnf到用戶mysql的根目錄
cat /etc/passwd 知道:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
復制一個到 /var/lib/mysql/.my.cnf
復制內容到剪貼板
同樣語句啟動后,是3308端口號,看來這個不太成立代碼:
[mysqld]
port = 3309
socket = /tmp/mysql.sock
5 指定配置文件
復制一個 my_setting.cnf ,修改為3340
復制內容到剪貼板
注意,指定配置文件的參數應該需要在第一個位置出現,互換兩個參數的位置會出錯了,啟動后,確實是3340代碼:
/Data/apps/mysql/bin/mysqld_safe --defaults-file=/Data/apps/mysql/var/my_setting.cnf --user=mysql &
6 修改啟動參數
復制內容到剪貼板
啟動后是 3341端口代碼:
/Data/apps/mysql/bin/mysqld_safe --defaults-file=/Data/apps/mysql/var/my_setting.cnf --user=mysql --port=3341 &
阿權的總結:
1 mysql有默認的一些參數,如果沒有指定,則取默認值
2 mysql嘗試讀取 /etc/my.cnf 做默認值
3 mysql嘗試讀取數據目錄的 my.cnf ,取代相應的值
4 mysql的用戶目錄似乎無效,不太清楚呢

5 mysql啟動參數可以指定配置文件位置,優先級次高
6 也可以直接指定具體的參數,優先級最高
./mysql -umarduk -pmarduk cnaudit <cnbak0902.sql
mysql>source d:\aiker_db.sql