標籤:建立 預設 my.cnf 登陸 insecure 禁用 序列 字元 自動啟動
MySQL官方的安裝布局是:/usr/local/mysql{bin,docs,man,include,lib,share,support-files}
對於編譯布爾選項,可以將值指定為1或ON啟用該選項,0或OFF表示禁用該選項。許多選項配置可在伺服器啟動時覆蓋編譯時間的預設值的。
1.前期準備:
卸載系統內建的mysql及設定檔和庫,運行rpm -qa|grep -i mysq和rpm -qa|grep -i mariadb,使用rpm -e --nodes前兩個名利篩選出來的包,再看看/etc/my.cnf檔案是否存在,如果在也刪掉;
建立無法登陸的mysql使用者及組,運行groupadd mysql,useradd -r -s /sbin/nologin -g mysql mysql;
安裝必要的軟體包,運行yum -y install install gcc gcc-c++ cmake make ncurses libaio openssl perl
2.解壓縮源碼包:
先在/root目錄下建立bld目錄(該名稱隨便取),該目錄是用來執行cmake命令的,單獨出一個目錄是為了保持源檔案的乾淨;再建立/usr/local/src/mysql目錄用來存放源碼包解壓後的檔案,以備後續使用;
運行tar -zxvf mysql-boost-8.0.12.tar.gz -C /usr/local/src/mysql
3.關於boost的處理:
MySQL8的源碼包有含boost和不含boost的;如果源碼包不含boost時並且不單獨安裝boost時,那麼在執行cmake時記得加上這些選項 -DDOWNLOAD_BOOST=ON -DDOWNLOAD_BOOST_TIMEOUT=1200 -DWITH_BOOST=/usr/local/boost
如果源碼包是包含了boost的話,在執行cmake時也要指定boost的位置,boost一般在源碼包解壓後的檔案下的boost目錄裡面;
這次使用含boost的源碼安裝,因為不含boost源碼安裝在下載boost時速度很慢即使把等待時間設定1200秒都可能會斷線。
4.關於字元集和排序字元集:
伺服器字元集。預設情況下,MySQL使用utf8mb4字元集。如果使用其它允許的字元集在mysql-srcfile/cmake/character_sets.cmake檔案中列為值CHARSETS_AVAILABLE。
伺服器定序。預設情況下,MySQL使用utf8mb4_0900_ai_ci。使用預設字元集及校對規則。
4.執行cmake:
centos7推薦使用systemd管理啟動任務,所以要開啟systemd的支援;
cd /root/bld
cmake /usr/local/src/mysql/mysql-8.0.12 \
-DBUILD_CONFIG=mysql_release \
-DWITH_SYSTEMD=ON \
-DWITH_BOOST=/usr/local/src/mysql/mysql-8.0.12/boost
5.再執行make,如果機器效能一般的話會執行很久,差不多執行了2個小時;再執行make install
6.初始化資料庫
進入MySQL的基目錄,運行./bin/mysqld --initialize-insecure --user=mysql這條命令不會產生root的初始密碼,如果使用--initialize代替--initialize-insecure的話,會產生root的初始密碼,使用grep password /var/log/mysqld.log即可查看到;
bin目錄下的mysqld還可以帶參數--defaults-file=/etc/my.cnf,這個參數是指定伺服器啟動時的配置參數,有些可以覆蓋編譯時間的取值;
mysqld會執行一下初始化序列:
- 檢查資料(data)目錄是否存在,如果不存在mysqld程式會建立它;如果資料目錄不為空白,則會報錯,那樣的話就要刪掉data目錄了(編譯時間預設是/usr/local/mysql/data,而且執行初始化時也沒有指定my.cnf檔案嘛,即使指定了my.cnf檔案但是該檔案沒有寫明這個配置的話那也是使用編譯時間的值或預設值);
- 在資料目錄中,伺服器建立
mysql系統資料庫及其表,包括授權表,伺服器端協助表和時區表。
- 伺服器初始化管理表所需的系統資料表空間和相關的資料結構InnoDB。
- 伺服器建立‘root‘@‘localhost‘超級使用者賬戶和其它保留賬戶某些保留帳戶已被鎖定且用戶端無法使用,但‘root‘@‘localhost‘僅供管理使用。
- 如果在基目錄下的share目錄存在fill_help_tables.sql並可用的話,會執行該檔案填充伺服器端協助表。
- 如果在執行初始化時帶了--init-file並且有效話,會執行該參數後面的檔案sql,這個檔案主要是用於自訂引導序列(目前還不懂),當伺服器在引導模式下運行時,某些功能不可用,這限制了檔案中允許的語句。這些包括與帳戶管理(例如
CREATE USER或GRANT),複製和全域事務標識符相關的語句。
7.啟動MySQL
把MySQL的基目錄賦給mysql使用者及組:chown -R mysql:mysql /usr/local/mysql;
執行systemctl start mysqld,因為在編譯時間指定了-DWITH_SYSTEMD=ON,則使用systemd管理工作啟動,也就不會再安裝bin/mysqld_safe檔案了;
8.配置自動啟動
待續
centos7源碼安裝MySQL8.0.12