ubuntu mysql5.7源碼安裝


本系列的lnmp的大框架基本上是按照http://www.linuxzen.com/lnmphuan-jing-da-jian-wan-quan-shou-ce-si-lnmpda-jian-yuan-ma-an-zhuang.html來寫的

 

  最近在學習搭建LNMP環境,nginx相對來說還是比較好搭的,但是mysql就太坑爹了,之前在網上查資料的時候看到一個人說它花了一周的時間源碼搭建mysql,剛開始內心還有點嘲笑他,但是此時此刻我發現是我錯了,周日花了一天的時間使用源碼安裝了mysql,累感不愛。在ubuntu下mysql可以使用apt-get命令一步安裝,僅做少許配置,但是源碼安裝真是掉了一層皮,但是源碼安裝又是一個運維必須要會的一個東西,所以必須學習。

 

  1、下載mysql

  這個是最基本的第一步,下載地址http://dev.mysql.com/downloads/mysql/,我選擇了5.7版本的,這一版相對前幾版在配置上變化較大,這也是在我之后搭建的過程中發現的,但是后悔已經來不及了。

 

  2、下載相關依賴

sudo apt-get install cmake libncurses5-dev  bison g++

  這里要注意的是ubuntu下的libncurses5-dev在紅帽下是另一個名字,這個請自行百度。

 

  3、創建mysql用戶、組

groupadd mysql
useradd -r mysql -G mysql

 

  4、解壓mysql

  我把下載好的mysql壓縮包放在了/root目錄下,因為之后要多次使用root權限,索性直接切換到root了。  

tar -xzvf mysql-5.7.9.tar.gz
cd mysql-5.7.9.tar.gz

 

  5、生成配置文件

  在mysql5.7以前,使用configure生成配置文件,但是5.7是使用cmake生成的。這也就是為什么之前要安裝cmake的原因。

  在這里要注意的一點是需要事先安裝好boost,如果沒有,在cmake最后再加個參數-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

即可,系統會自動幫你下載解壓安裝boost

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
make&&make install

參數含義:    

-DCMAKE_INSTALL_PREFIX:指定MySQL程序的安裝目錄,默認/usr/local/mysql
-DMYSQL_DATADIR:數據文件目錄
-DDEFAULT_CHARSET:指定服務器默認編碼,默認latin1
-DDEFAULT_COLLATION:指定服務器默認的整理編碼,默認latin1_general_ci
-DMYSQL_UNIX_ADDR:連接數據庫socket文件路徑,默認/tmp/mysql.sock

-DENABLED_LOCAL_INFILE:指定是否允許本地執行LOAD DATA INFILE,默認OFF
-DWITH_DEBUG bool值,表示是否開啟debug模式
-DWITH_MYISAM_STORAGE_ENGINE= MYISAM引擎支持(1|0)
-DWITH_INNOBASE_STORAGE_ENGINE= innoDB引擎支持(1|0)
-DWITH_MEMORY_STORAGE_ENGINE= MEMORY引擎支持(1|0)
-DWITHOUT_xxx_STORAGE_ENGINE:指定不編譯的存儲引擎
SYSCONFDIR:初始化參數文件目錄
-DMYSQL_TCP_PORT:服務端口號,默認3306
-DWITH_COMMENT:指定編譯備注信息

 

  6、編譯安裝

  創建安裝目錄
    mkdir -p /usr/local/mysql/data
  設置權限     chown
-R mysql:mysql /usr/local/mysql   編譯並安裝     make&&make install

 

  7、配置(這里的問題最多,出了很多問題,到現在只有這個勉強能用的方法)

  ①復制my.cnf配置文件

    cp /usr/local/mysql/support-files/***.cnf /etc/my.cnf

  ②配置/etc/my.conf

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/mysql_error.log
pid-file=/usr/local/mysql/mysql.pid

#socket=/usr/local/mysql/mysql.sock
user=mysql
port=3306
explicit_defaults_for_timestamp=true

[mysqld_safe]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/mysql_error.log
pid-file=/usr/local/mysql/mysql.pid

 

  ③復制權限文件

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

  ④初始化MySQL(這步完成后/usr/local/mysql/data目錄下有數據了,本來是空的)

    sudo bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid 生成無密碼用戶

    或sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid 生成隨機密碼用戶

  ⑤啟動MySQL(修改密碼)

    如果不先使用mysqld_safe直接啟動mysql的話,就會報錯

    /usr/local/mysql/bin/mysqld_safe --user=mysql &

    service mysql start

    /usr/local/bin/mysql -u root -h 127.0.0.1 --skip-password(無密碼)

    或/usr/lcoal/bin/mysql -u root -h 127.0.0.1 -p (有密碼)

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';  (注意前面的mysql>是進入mysql的標志,不是命令)

    mysql> quit

    service mysql stop

    可以看到退出mysql服務時是把mysqld_safe也關閉的

  ⑧啟動mysql(登陸)

    /usr/local/bin/mysqld_safe &

    service mysql start

    mysql -u root -p

  從上面可以看出每次啟動mysql時都要先啟動mysqld_safe,在啟動mysql,關閉mysql時會把mysqld_safe一起關掉,所以這就是我認為安裝的不完美的地方,如果是終端apt-get安裝的話從來沒有發生過這種情況。看了mysql的官網在介紹安裝的時候也是這么講的也許是5.7版本就是這樣操作的,連接:

  http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html

  http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysql-install-db.html

    

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM