1. 程式人生 > >CentOS7下原始碼安裝MySQL8.0.11

CentOS7下原始碼安裝MySQL8.0.11

以下為本人安裝經驗,不是一下子可以完成的,也是搞了半天才出來的

部分內容來自網路,一切僅供參考,有幫助就好

 

        資源網址


#官網原始碼編譯安裝文件:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html

#系統安裝條件官方文件說明:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html

 

 

#原始碼tar包:https://dev.mysql.com/downloads/mysql/            (在選擇作業系統下拉列表最後就是原始碼包Source Code)

Generic Linux (Architecture Independent), Compressed TAR Archive     8.0.11     75.7M     
Download
(mysql-8.0.11.tar.gz)     MD5: 38d5a5c1a1eeed1129fec3a999aa5efd

#Boost官網:https://www.boost.org/

 

 

 

 

 

        前期處理


首先檢查是否已經安裝過mysql:
[[email protected] ~]# rpm -qa | grep mysql
有的話就解除安裝掉以前安裝的mysql:
[[email protected] ~]# rpm -e --nodeps xxx(xxx是搜尋結果)
並刪除所有的相關檔案:
/etc/my.cnf

 

 

 

 

        依賴庫說明

    1> cmake
MySQL使用cmake跨平臺工具預編譯原始碼,用於設定mysql的編譯引數。如:安裝目錄、資料存放目錄、字元編碼、排序規則等。安裝最新版本即可。

    2> make
mysql原始碼是由C和C++語言編寫,在Linux下使用make對原始碼進行編譯和構建,要求必須安裝make 3.75或以上版本

    3> gcc
GCC是Linux下的C語言編譯工具,mysql原始碼編譯完全由C和C++編寫,要求必須安裝GCC4.4.6或以上版本

    4> Boost   https://www.boost.org/
mysql原始碼中用到了C++的Boost庫,要求必須安裝boost1.66.0或以上版本

    5> bison
Linux下C/C++語法分析器

    6> ncurses
字元終端處理庫

 

 

 

        開始安裝工作


    1.安裝依賴
[[email protected] ~]# yum -y install wget  cmake gcc gcc-c++ ncurses  ncurses-devel  libaio-devel  openssl openssl-devel

    2.建立mysql使用者
[[email protected] ~]# groupadd mysql
[[email protected] ~]# useradd -r -g mysql -s /bin/false mysql

    3.建立安裝目錄和資料目錄
[[email protected] ~]# mkdir -p /usr/local/mysql
[[email protected] ~]# mkdir -p /usr/local/mysql/data

    4.解壓相關tar包
[[email protected] opt]# md5sum mysql-8.0.11.tar.gz #使用md5sum命令來檢查是否為原版
37664399c91021abe070faa700ecd0ed mysql-8.0.11.tar.gz

[[email protected] opt]# tar -zxvf mysql-8.0.11.tar.gz
[[email protected] opt]# tar -zxvf mysql-boost-8.0.11.tar.gz -C /usr/local #解壓從官網下載的boost

    5.配置mysql預編譯引數
進入opt下的MySQL原始碼解壓目錄執行:

 

 

 

[[email protected] mysql-8.0.11]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWTH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost_1_66_0

[[email protected] mysql-8.0.11]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWTH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost_1_66_0

注意:這裡為一條語句

更多預編譯配置引數請參考mysql官方文件說明:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html

    -DCMAKE_INSTALL_PREFIX:安裝路徑
    -DMYSQL_DATADIR:資料存放目錄
    -DWITH_BOOST:boost原始碼路徑
    -DSYSCONFDIR:my.cnf配置檔案目錄
    -DEFAULT_CHARSET:資料庫預設字元編碼
    -DDEFAULT_COLLATION:預設排序規則
    -DENABLED_LOCAL_INFILE:允許從本檔案匯入資料
    -DEXTRA_CHARSETS:安裝所有字符集

    6.開始編譯安裝
[[email protected] mysql-8.0.11]# make && make install
make 編譯時間超長,完成標誌為100%並且返回[[email protected] mysql-8.0.11]#
make install 安裝,挺快的。完成標誌為返回[[email protected] mysql-8.0.11]#

 

 

        安裝完成,開始配置


    1.配置my.cnf檔案
把已有的my.cnf更名為my.cnf.bak(如果有),然後新建
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server-id=1
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
##請根據實際情況新增引數


    2.目錄許可權修改
[[email protected] ~]# chown -R mysql:mysql /usr/local/mysql
[[email protected] ~]# chown -R mysql:mysql /usr/local/mysql/data
[[email protected] ~]# chmod 755 /usr/local/mysql -R
[[email protected] ~]# chmod 755 /usr/local/mysql/data -R

 

 

 

 

 

        進入/usr/local/mysql下

 

 

 

    1.初始化

[[email protected] bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data/

[[email protected] bin]# ./mysql_ssl_rsa_setup


    2.啟動mysql
[[email protected] bin]# ./mysqld_safe --user=mysql

    3.修改賬號密碼
[[email protected] bin]# ./mysql  -uroot -p
mysql> alter user 'root'@'localhost' identified by "123456";

mysql> show databases;

    4.配置環境變數
[[email protected] bin]# vim /etc/profile
JAVA_HOME=/opt/soft/jdk1.8.0_171
PATH=/opt/soft/jdk1.8.0_171/bin:/usr/local/mysql/bin:$PATH
export JAVA_HOME PATH

[[email protected] bin]# source /etc/profile(使配置立即生效)


    5.配置防火牆
[[email protected] ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent(永久的)

[[email protected] ~]# firewall-cmd --reload


    6.新增遠端賬號(遠端workbench可以訪問)(hostip擁有訪問許可權的IP地址,%號說明一切IP都可以連線)(123456密碼)
mysql> create user 'Orange'@'hostip' identified by '123456';
Query OK, 0 rows affected (0.08 sec)

mysql> grant all privileges on *.* to 'Orange'@'hostip';
Query OK, 0 rows affected (0.04 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)


    7.取消8.0新特性sha2(不取消則需要通過sha2加密連線,但許多資料庫管理工具沒這玩意,所以會報錯)
mysql> use mysql
mysql> select user, host, plugin, authentication_string from user\G;

[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server-id=1
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
default_authentication_plugin=mysql_native_password #加上這句話

mysql> INSERT INTO user (Host,User,Password) VALUES("%","Orange",PASSWORD("123456")); #增加新使用者