1. 程式人生 > >LAMP之Mysql源碼配置安裝

LAMP之Mysql源碼配置安裝

groupadd pat 名稱 cal geos 所有 數據庫管理系統 fma char

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件。 MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。 MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。 由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境 技術分享圖片
https://dev.mysql.com/doc/refman/5.7/en/source-installation.html  #mysql官網,源碼安裝Mysql,依靠Cmake

下載安裝Cmake

[root@localhost1 cmake-3.9.6]# wget https://cmake.org/files/v3.9/cmake-3.9.6.tar.gz
[root@localhost1 cmake-3.9.6]# tar zxf cmake-3.9.6.tar.gz 
[root@localhost1 cmake-3.9.6]# cd cmake-3.9.6
[root@localhost1 cmake
-3.9.6]# ./configure [root@localhost1 cmake-3.9.6]# gmake [root@localhost1 cmake-3.9.6]# gmake install

[root@localhost1 cmake-3.9.6]# which gmake
/usr/bin/gmake

安裝Mysql之前必須要安裝的組件

yum -y install gcc* libaio* ncurses-devel
groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql
mkdir /opt/mysql-5.7.21
/data -p mkdir /opt/mysql-5.7.21/tmp -p chown -R mysql.mysql /opt/mysql-5.7.21 chmod 750 -R /opt/mysql-5.7.21
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html  Mysql官網編譯參數詳解
-DCMAKE_INSTALL_PREFIX=dir_name
安裝基礎目錄。
該值可以在服務器啟動時使用該--basedir選項進行設置 。

-DMYSQL_DATADIR=dir_name
MySQL數據目錄的位置。
該值可以在服務器啟動時使用該--datadir選項進行設置 。

-DMYSQL_UNIX_ADDR=file_name
服務器偵聽套接字連接的Unix套接字文件路徑。這必須是絕對路徑名稱。默認是/tmp/mysql.sock。
該值可以在服務器啟動時使用該--socket選項進行設置 。

-DDEFAULT_CHARSET=charset_name
服務器字符集。默認情況下,MySQL使用 latin1(cp1252西歐)字符集。
charset_name可以是一種 binary,armscii8, ascii,big5, cp1250,cp1251, cp1256,cp1257, cp850,cp852, cp866,cp932, dec8,eucjpms, euckr,gb2312, gbk,geostd8, greek,hebrew, hp8,keybcs2, koi8r,koi8u, latin1,latin2, latin5,latin7, macce,macroman, sjis,swe7, tis620,ucs2, ujis,utf8, utf8mb4,utf16, utf16le,utf32。允許的字符集在cmake/character_sets.cmake文件中被列為 值CHARSETS_AVAILABLE。
該值可以在服務器啟動時使用該--character_set_server選項進行設置 。

-DDEFAULT_COLLATION=collation_name
服務器整理。默認情況下,MySQL使用 latin1_swedish_ci。使用該 SHOW COLLATION語句來確定每個字符集可用的排序規則。
該值可以在服務器啟動時使用該--collation_server選項進行設置 。

cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.7.21 -DMYSQL_DATADIR=/opt/mysql-5.7.21/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/opt/mysql-5.7.21/tmp/mysql.sock -DWITH_BOOST=/opt/boost這個參數是必須的 -DWITH_DEBUG=1#上面沒寫

錯誤總結:

MySQL5.7.17在cmake的時候報錯如下:

點擊(此處)折疊或打開

CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=
This CMake script will look for boost in . If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
Call Stack (most recent call first):
cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
CMakeLists.txt:455 (INCLUDE)
-- Configuring incomplete, errors occurred!
See also "/root/mysqlsoftware/mysql-5.7.17/CMakeFiles/CMakeOutput.log".
See also "/root/mysqlsoftware/mysql-5.7.17/CMakeFiles/CMakeError.log".
解決辦法是:
1.在/usr/local下創建一個名為boost的文件夾
    mkdir -p /usr/local/boost
2.進入這個新創建的文件夾然後下載boost
    wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
3.解壓
    tar -xvzf boost_1_59_0.tar.gz
4.繼續cmake,添加上紅色部分

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DCOMPILATION_COMMENT=Mysqlma -DWITH_READLINE=ON -DWITH_BOOST=/usr/local/boost -DSYSCONFDIR=/data/mysqldata/3306 -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock
-DWITH_BOOST=path_name

Boost庫是構建MySQL所必需的。這些 CMake選項可以控制庫源位置,以及是否自動下載它:

-DWITH_BOOST=path_name 指定Boost庫目錄位置。也可以通過設置BOOST_ROOT或 WITH_BOOST環境變量來指定Boost位置 。

從MySQL 5.7.11開始,它 -DWITH_BOOST=system是允許的,並且表示在標準位置的編譯主機上安裝了正確版本的Boost。在這種情況下,使用的是Boost的安裝版本,而不是MySQL源代碼發行版中包含的任何版本。

-DDOWNLOAD_BOOST=bool 指定是否在指定位置不存在的情況下下載Boost源。默認是 OFF。

-DDOWNLOAD_BOOST_TIMEOUT=seconds 下載Boost庫的超時時間(秒)。默認值是600秒。

例如,如果您通常構建MySQL,將對象輸出放置在bldMySQL源代碼樹的子目錄中,則可以使用Boost構建,如下所示:

mkdir bld
cd bld
cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
這會導致Boost被下載到 my_boost您的主目錄下的目錄中。如果所需的Boost版本已經存在,則不進行下載。如果所需的Boost版本更改,則會下載較新的版本。

如果Boost已經在本地安裝,並且編譯器自己找到Boost頭文件,則可能不需要指定前面的CMake選項。但是,如果MySQL所需的Boost版本發生更改並且本地安裝的版本尚未升級,則可能會出現構建問題。使用CMake 選項應該給你一個成功的構建。

通過上述允許將Boost下載到指定位置的設置,當所需的Boost版本發生更改時,您需要刪除該bld文件夾並重新創建該文件夾,然後再次執行cmake步驟。否則,新的Boost版本可能無法下載,編譯可能會失敗。
http://blog.csdn.net/cryhelyxx/article/details/47610247    問題的解決
bin/mysqld --initialize --user=mysql  初始化mysql。指定用戶   --initialize會自動生成密碼    
cp /opt/mysql-5.7.21/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
echo export PATH=/application/mysql/bin:$PATH>>/etc/profile
在不知道mysql root密碼的情況下修改密碼
[root@cairui mysql]# bin/mysqld_safe --skip-grant-tables & 
在mysql中輸入一下命令
update mysql.user set authentication_string=password(root) where user=root ;
加入開機啟動
[root@cairui ~]# chkconfig mysqld on    
http://www.bubuko.com/infodetail-2167283.html  不需要/etc/my.cnf的解釋

LAMP之Mysql源碼配置安裝