對于5.7以後的mysql編譯安裝,我遇到了不少坑,各種問題。mysql5.7.18編譯openssl會出錯,環境也神奇地報其他問題,即使我安裝成功了,卻無法以安裝模式登陸mysql修改密碼。
最後使用前幾個版本就解決問題了。我使用的是5.7.16.
#系統安裝條件
1> cmake
MySQL使用cmake跨平台工具預編譯源碼,用于設定mysql的編譯參數。如:安裝目錄、資料存放目錄、字元編碼、排序規則等。安裝最新版本即可。
2> make3.75
mysql源代碼是由C和C++語言編寫,在Linux下使用make對源碼進行編譯和建構,要求必須安裝make 3.75或以上版本
3> gcc4.4.6
GCC是linux下的C語言編譯工具,mysql源碼編譯完全由C和C++編寫,要求必須安裝GCC4.4.6或以上版本
4> Boost1.59.0
mysql源碼中用到了C++的Boost庫,要求必須安裝boost1.59.0或以上版本
5> bison2.1
Linux下C/C++文法分析器
6> ncurses
字元終端處理庫
官網的溫馨提示:足夠的可用記憶體 如果在編譯大型源檔案時遇到諸如“ 内部編譯器錯誤 ”等問題 ,可能是記憶體太少。如果在虛拟機上編譯,請嘗試增加記憶體配置設定。
<code>#其實這個cmake可以不用更新的。。官網說的是make···又多幹活了,多折騰了</code>
<code>yum erase cmake</code>
<code>#下載下傳cmake</code>
<code>wget -c https:</code><code>//cmake</code><code>.org</code><code>/files/v3</code><code>.7</code><code>/cmake-3</code><code>.7.2.</code><code>tar</code><code>.gz</code>
<code>tar</code> <code>zxvf cmake-3.7.2.</code><code>tar</code><code>.gz -C </code><code>/usr/local/src</code>
<code>#下載下傳boost</code>
<code>wget -c </code>
<code>mkdir</code> <code>-p </code><code>/usr/local/boost</code>
<code>cp</code> <code>boost_1_59_0.</code><code>tar</code><code>.gz </code><code>/usr/local/boost</code>
<code>#下載下傳mysql5.7.16</code>
<code>wget -c </code>
<code>tar</code> <code>-zxf mysql-5.7.16.</code><code>tar</code><code>.gz -C </code><code>/usr/local/src</code>
<code>yum </code><code>install</code> <code>-y apr* autoconf automake bison </code><code>bzip2</code> <code>bzip2</code><code>* cloog-ppl cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libxml*?libXaw-devel libXmu-devel libtiff libtiff* </code><code>make</code> <code>mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel</code>
<code>#編譯安裝cmkae</code>
<code>cd</code> <code>/usr/local/src/cmake-3</code><code>.7.2</code>
<code>.</code><code>/configure</code>
<code>make</code>
<code>make</code> <code>install</code>
<code>ln</code> <code>-sf </code><code>/usr/local/bin/cmake</code> <code>/usr/bin/cmake</code>
<code>#安裝mysql資料庫</code>
<code>#添加mysql組</code>
<code>groupadd mysql </code>
<code>#建立使用者mysql并加入到mysql組,不允許mysql使用者直接登入系統</code>
<code>useradd</code> <code>-g mysql mysql -s </code><code>/bin/false</code>
<code>#建立MySQL資料庫存放目錄</code>
<code>mkdir</code> <code>-p </code><code>/data/mysql</code>
<code>#設定MySQL資料庫存放目錄權限</code>
<code>chown</code> <code>-R mysql:mysql </code><code>/data/mysql</code>
<code>#建立MySQL安裝目錄</code>
<code>mkdir</code> <code>-p </code><code>/usr/local/mysql</code>
<code>cd</code> <code>/usr/local/src/mysql-5</code><code>.7.18</code>
<code>mkdir</code> <code>bld</code>
<code>cd</code> <code>bld</code>
<code>cmake .. -DCMAKE_INSTALL_PREFIX=</code><code>/usr/local/mysql</code> <code>-DMYSQL_DATADIR=</code><code>/data/mysql</code> <code>-DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EMBEDDED_SERVER=OFF -DWITH_BOOST=</code><code>/usr/local/boost</code>
<code>make</code> <code>-j `</code><code>grep</code> <code>processor </code><code>/proc/cpuinfo</code> <code>| </code><code>wc</code> <code>-l`</code>
<code>#安裝成功</code>
<code>#如果編譯出錯, 重新編譯前要删除編譯失敗的檔案,重新編譯時,需要清除舊的對象檔案和緩存資訊。</code>
<code>#make clean</code>
<code>#rm -f CMakeCache.txt</code>
<code>#rm -rf /etc/my.cnf #删除系統預設的配置檔案(如果預設沒有就不用删除)</code>
<code>#生成資料庫密碼</code>
<code>cd</code> <code>/usr/local/mysql</code> <code>#進入MySQL安裝目錄</code>
<code>.</code><code>/bin/mysqld</code> <code>--user=mysql --initialize --basedir=</code><code>/usr/local/mysql</code> <code>--datadir=</code><code>/data/mysql</code> <code>#生成mysql系統資料庫 --initialize表示預設生成密碼, --initialize-insecure 表示不生成密碼, 密碼為空。</code>
<code>##2017-07-05T02:52:50.934379Z 1 [Note] A temporary password is generated for root@localhost: x5fujvwK25:y</code>
<code>#設定開機啟動</code>
<code>cp</code> <code>/usr/local/mysql/support-files/my-default</code><code>.cnf </code><code>/usr/local/mysql/my</code><code>.cnf</code>
<code>ln</code> <code>-s </code><code>/usr/local/mysql/my</code><code>.cnf </code><code>/etc/my</code><code>.cnf </code><code>#添加到/etc目錄的軟連接配接</code>
<code>cp</code> <code>/usr/local/mysql/support-files/mysql</code><code>.server </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/mysqld</code> <code>#把Mysql加入系統啟動</code>
<code>chmod</code> <code>755 </code><code>/etc/init</code><code>.d</code><code>/mysqld</code> <code>#增加執行權限</code>
<code>chkconfig mysqld on </code><code>#加入開機啟動</code>
<code>vi</code> <code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/mysqld</code> <code>#編輯</code>
<code>basedir=</code><code>/usr/local/mysql</code> <code>#MySQL程式安裝路徑</code>
<code>datadir=</code><code>/data/mysql</code> <code>#MySQl資料庫存放目錄</code>
<code>:wq! </code><code>#儲存退出</code>
<code>service mysqld start </code><code>#啟動</code>
<code>vi</code> <code>/etc/profile</code> <code>#把mysql服務加入系統環境變量:在最後添加下面這一行</code>
<code>export</code> <code>PATH=$PATH:</code><code>/usr/local/mysql/bin</code>
<code>source</code> <code>/etc/profile</code> <code>#使配置立刻生效</code>
<code>#下面這兩行把myslq的庫檔案連結到系統預設的位置,這樣你在編譯類似PHP等軟體時可以不用指定mysql的庫檔案位址。</code>
<code>ln</code> <code>-s </code><code>/usr/local/mysql/lib/mysql</code> <code>/usr/lib/mysql</code>
<code>ln</code> <code>-s </code><code>/usr/local/mysql/include/mysql</code> <code>/usr/include/mysql</code>
<code>mkdir</code> <code>/var/lib/mysql</code> <code>#建立目錄</code>
<code>ln</code> <code>-s </code><code>/tmp/mysql</code><code>.sock </code><code>/var/lib/mysql/mysql</code><code>.sock </code><code>#添加軟連結</code>
<code>mysql_secure_installation </code><code>#修改Mysql密碼,輸入之前生成的密碼回車,根據提示操作。</code>
<code>Press y|Y </code><code>for</code> <code>Yes, any other key </code><code>for</code> <code>No: y </code><code>#是否安裝密碼安全插件?選擇y</code>
<code>There are three levels of password validation policy: </code><code>#有以下幾種密碼強度選擇</code>
<code>LOW Length >= 8</code>
<code>MEDIUM Length >= 8, numeric, mixed </code><code>case</code><code>, and special characters</code>
<code>STRONG Length >= 8, numeric, mixed </code><code>case</code><code>, special characters and dictionary </code><code>file</code>
<code>Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 </code><code>#選擇0,隻要8位數字即可,選1要有大寫,小寫,特殊字元等</code>
<code>UNINSTALL PLUGIN validate_password ; </code><code>#解除安裝密碼強度插件</code>
<code>use mysql;</code>
<code>update mysql.user </code><code>set</code> <code>authentication_string=password(</code><code>'123456'</code><code>) where user=</code><code>'root'</code> <code>; </code><code>#登入mysql控制台修改</code>
<code>ALTER USER </code><code>'root'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED WITH mysql_native_password AS </code><code>'123456'</code><code>; </code><code>#修改密碼</code>
<code>#上面登陸mysql控制台和修改密碼太過麻煩了,使用下面一條指令即可</code>
<code>#授權root遠端通路,密碼為root</code>
<code>mysql -uroot -proot</code>
<code>GRANT ALL PRIVILEGES ON *.* TO </code><code>'root'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'root'</code> <code>WITH GRANT OPTION;</code>
<code>FLUSH PRIVILEGES;</code>
附官網編譯安裝mysql步驟
<code># Preconfiguration setup</code>
<code>shell> groupadd mysql</code>
<code>shell> </code><code>useradd</code> <code>-r -g mysql -s </code><code>/bin/false</code> <code>mysql</code>
<code># Beginning of source-build specific instructions</code>
<code>shell> </code><code>tar</code> <code>zxvf mysql-VERSION.</code><code>tar</code><code>.gz</code>
<code>shell> </code><code>cd</code> <code>mysql-VERSION</code>
<code>shell> </code><code>mkdir</code> <code>bld</code>
<code>shell> </code><code>cd</code> <code>bld</code>
<code>shell> cmake ..</code>
<code>shell> </code><code>make</code>
<code>shell> </code><code>make</code> <code>install</code>
<code># End of source-build specific instructions</code>
<code># Postinstallation setup</code>
<code>shell> </code><code>cd</code> <code>/usr/local/mysql</code>
<code>shell> </code><code>chown</code> <code>-R mysql .</code>
<code>shell> </code><code>chgrp</code> <code>-R mysql .</code>
<code>shell> bin</code><code>/mysql_install_db</code> <code>--user=mysql </code><code># Before MySQL 5.7.6</code>
<code>shell> bin</code><code>/mysqld</code> <code>--initialize --user=mysql </code><code># MySQL 5.7.6 and up</code>
<code>shell> bin</code><code>/mysql_ssl_rsa_setup</code> <code># MySQL 5.7.6 and up</code>
<code>shell> </code><code>chown</code> <code>-R root .</code>
<code>shell> </code><code>chown</code> <code>-R mysql data</code>
<code>shell> bin</code><code>/mysqld_safe</code> <code>--user=mysql &</code>
<code># Next command is optional</code>
<code>shell> </code><code>cp</code> <code>support-files</code><code>/mysql</code><code>.server </code><code>/etc/init</code><code>.d</code><code>/mysql</code><code>.server</code>
附網上的參數配置參考,但是我使用網友這個編譯安裝是不成功的。這裡隻是為了參考他備注的參數,備注參數感覺還是可以的。
<code>#</code>
<code> </code><code>cmake \</code>
<code>-DWITH_BOOST=</code><code>/usr/local/boost_1_59_0</code> <code>\ [boost目錄]</code>
<code>-DCMAKE_INSTALL_PREFIX=</code><code>/usr/local/mysql</code> <code>\ [MySQL安裝的根目錄]</code>
<code>-DMYSQL_DATADIR=</code><code>/mydata/mysql/data</code> <code>\ [MySQL資料庫檔案存放目錄]</code>
<code>-DSYSCONFDIR=</code><code>/etc</code> <code>\ [MySQL配置檔案所在目錄]</code>
<code>-DMYSQL_USER=mysql \ [MySQL使用者名] </code>
<code>-DWITH_MYISAM_STORAGE_ENGINE=1 \ [MySQL的資料庫引擎]</code>
<code>-DWITH_INNOBASE_STORAGE_ENGINE=1 \ [MySQL的資料庫引擎]</code>
<code>-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ [MySQL的資料庫引擎]</code>
<code>-DWITH_MEMORY_STORAGE_ENGINE=1 \ [MySQL的資料庫引擎]</code>
<code>-DWITH_READLINE=1 \ [MySQL的readline library]</code>
<code>-DMYSQL_UNIX_ADDR=</code><code>/var/run/mysql/mysql</code><code>.sock \ [MySQL的通訊目錄]</code>
<code>-DMYSQL_TCP_PORT=3306 \ [MySQL的監聽端口]</code>
<code>-DENABLED_LOCAL_INFILE=1 \ [啟用加載本地資料]</code>
<code>-DENABLE_DOWNLOADS=1 \ [編譯時允許自主下載下傳相關檔案]</code>
<code>-DWITH_PARTITION_STORAGE_ENGINE=1 \</code>
<code>-DEXTRA_CHARSETS=all \ [使MySQL支援所有的擴充字元]</code>
<code>-DDEFAULT_CHARSET=utf8 \ [設定預設字元集為utf8]</code>
<code>-DDEFAULT_COLLATION=utf8_general_ci \ [設定預設字元校對]</code>
<code>-DWITH_DEBUG=0 \ [禁用調試模式]</code>
<code>-DMYSQL_MAINTAINER_MODE=0 \</code>
<code>-DWITH_SSL:STRING=bundled \ [通訊時支援ssl協定]</code>
<code>-DWITH_ZLIB:STRING=bundled [允許使用zlib library]</code>
#
文檔參考:https://dev.mysql.com/doc/refman/5.7/en/source-installation.html
支援平台 https://www.mysql.com/support/supportedplatforms/database.html
本文轉自 yanconggod 51CTO部落格,原文連結:http://blog.51cto.com/yanconggod/1945644