centos7源碼安裝MySQL8.0.12

來源:互聯網
上載者:User

標籤:建立   預設   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會執行一下初始化序列:

  1. 檢查資料(data)目錄是否存在,如果不存在mysqld程式會建立它;如果資料目錄不為空白,則會報錯,那樣的話就要刪掉data目錄了(編譯時間預設是/usr/local/mysql/data,而且執行初始化時也沒有指定my.cnf檔案嘛,即使指定了my.cnf檔案但是該檔案沒有寫明這個配置的話那也是使用編譯時間的值或預設值);
  2. 在資料目錄中,伺服器建立 mysql系統資料庫及其表,包括授權表,伺服器端協助表和時區表。
  3. 伺服器初始化管理表所需的系統資料表空間和相關的資料結構InnoDB。
  4. 伺服器建立‘root‘@‘localhost‘超級使用者賬戶和其它保留賬戶某些保留帳戶已被鎖定且用戶端無法使用,但‘root‘@‘localhost‘僅供管理使用。
  5. 如果在基目錄下的share目錄存在fill_help_tables.sql並可用的話,會執行該檔案填充伺服器端協助表。
  6. 如果在執行初始化時帶了--init-file並且有效話,會執行該參數後面的檔案sql,這個檔案主要是用於自訂引導序列(目前還不懂),當伺服器在引導模式下運行時,某些功能不可用,這限制了檔案中允許的語句。這些包括與帳戶管理(例如CREATE USERGRANT),複製和全域事務標識符相關的語句。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.