天天看點

centos7.x編譯安裝mysql5.7.16

對于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 &gt;= 8</code>

<code>MEDIUM Length &gt;= 8, numeric, mixed </code><code>case</code><code>, and special characters</code>

<code>STRONG Length &gt;= 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&gt; groupadd mysql</code>

<code>shell&gt; </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&gt; </code><code>tar</code> <code>zxvf mysql-VERSION.</code><code>tar</code><code>.gz</code>

<code>shell&gt; </code><code>cd</code> <code>mysql-VERSION</code>

<code>shell&gt; </code><code>mkdir</code> <code>bld</code>

<code>shell&gt; </code><code>cd</code> <code>bld</code>

<code>shell&gt; cmake ..</code>

<code>shell&gt; </code><code>make</code>

<code>shell&gt; </code><code>make</code> <code>install</code>

<code># End of source-build specific instructions</code>

<code># Postinstallation setup</code>

<code>shell&gt; </code><code>cd</code> <code>/usr/local/mysql</code>

<code>shell&gt; </code><code>chown</code> <code>-R mysql .</code>

<code>shell&gt; </code><code>chgrp</code> <code>-R mysql .</code>

<code>shell&gt; bin</code><code>/mysql_install_db</code> <code>--user=mysql    </code><code># Before MySQL 5.7.6</code>

<code>shell&gt; bin</code><code>/mysqld</code> <code>--initialize --user=mysql </code><code># MySQL 5.7.6 and up</code>

<code>shell&gt; bin</code><code>/mysql_ssl_rsa_setup</code>              <code># MySQL 5.7.6 and up</code>

<code>shell&gt; </code><code>chown</code> <code>-R root .</code>

<code>shell&gt; </code><code>chown</code> <code>-R mysql data</code>

<code>shell&gt; bin</code><code>/mysqld_safe</code> <code>--user=mysql &amp;</code>

<code># Next command is optional</code>

<code>shell&gt; </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