標籤:mysql 程式 管理工具 centos 資料庫檔案
大家好, 小金子今天跟大家一起練習編譯安裝MySQL5.5.40源碼包.
在開始之前我們需要準備一些庫檔案.
[[email protected] ~]# yum install zlib-devel openssl-devel gcc-c++ gcc bison cmake ncurses-devel -y
一定要安裝這些包, 小金子之前沒有安裝就開始編譯MySQL,踩了好多坑, 後來上網一查才發現需要這些檔案和管理工具才行.因此一定要安裝.
還有如果大家編譯過程中出錯, 請一定要執行:
[[email protected] ~]# rm -f CMakeCache.txt
之後再繼續安裝.
安裝好之後我們來添加MySQL資料庫需要的賬戶和目錄:
[[email protected] ~]# groupadd -r mysql[[email protected] ~]# useradd -g mysql -r -s /sbin/nologin mysql[[email protected] ~]# id mysql #確認使用者[[email protected] ~]# mkdir /usr/local/mysql-5.5.40 -p #用來存放MySQL程式等[[email protected] ~]# mkdir /var/data/mysql -p #存放資料庫檔案[[email protected] ~]# chown mysql:mysql /var/data -R
下載MySQL源碼包:mysql-5.5.40.tar.gz 點我下載MySQL5.5.40原始碼
下載後上傳到伺服器
[[email protected] ~]# tar -xvf mysql-5.5.40.tar.gz -C /usr/local/[[email protected] ~]# cd /usr/local/mysql-5.5.4
cmake編譯MySQL的一些常用選項:
------------------------------------------------------------cmake mysql 編譯安裝:./configure -> cmake ../configure --help -> cmake -LH -> ccmake .------------------------------------------------------------指定安裝檔案的安裝路徑常用選項-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMYSQL_DATADIR=/data/mysql-DSYSCONFDIR=/etc------------------------------------------------------------預設編譯的儲存引擎包括: csv, myisma, myisammrg, heap. 若要安裝其他儲存引擎,可以使用類似如下的編譯選項-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_ARCHIVE_STORAGE_ENGINE=1-DWITH_BLACKHOLE_STORAGE_ENGINE=1------------------------------------------------------------若要明確指出不編譯某儲存引擎, 可以使用類似如下的選項:-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1例如:-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1-DWITHOUT_FEDERATED_STORAGE_ENGINE=1------------------------------------------------------------若要編譯進其他功能, 如SSl等, 可使用類似如下選項來實現編譯時間使用某庫檔案或者, 或者不使用某庫檔案.-DWITH_READLINE=1-DWITH_SSL=system-DWITH_ZLIB=system-DWITH_LIBWRAP=0------------------------------------------------------------其他常用選項:-DMYSQL_TCP_PORT=3306-MYDQL_UNIX_ADDR=/tmp/mysql.sock-DENABLED_LOCAL_INFILE=1-DEXTRA_CHARSETS=all-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DWITH_DEBUG=0-DENABLE_PROFILING=1------------------------------------------------------------
好, 我們開始編譯
[[email protected] mysql-5.5.40]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.40 -DMYSQL_DATADIR=/var/data/mysql \ #資料庫目錄-DSYSCONFDIR=/etc \ #設定檔目錄-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #啟用InnoDB儲存引擎-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #啟用ARCHIVE儲存引擎-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #啟用黑洞儲存引擎-DWITH_READLINE=1 -DWITH_SSL=system \ #啟用SSL協議-DWITH_ZLIB=system \ #啟用Zlib壓縮-DWITH_LIBWRAP=0 -DDEFAULT_CHARSET=utf8 \ #設定字元集utf8-DMYSQL_NUIX_ADDR=/tmp/mysql.sock -DDEFAULT_COLLATION=utf8_general_ci
如果出現以下資訊, 那麼恭喜你第一階段的配置順利完成了
過程中如果出現錯誤也不要害怕, 因為你長經驗的時刻就要來了, 通常是因為缺少了什麼依賴的包而出現的問題, 你可以把你的錯誤資訊鐵道Google或者百度中去搜尋.
....(此處省略一萬字)-- Performing Test HAVE_IB_GCC_ATOMIC_BUILTINS-- Performing Test HAVE_IB_GCC_ATOMIC_BUILTINS - Success-- Performing Test HAVE_IB_ATOMIC_PTHREAD_T_GCC-- Performing Test HAVE_IB_ATOMIC_PTHREAD_T_GCC - Success-- Check size of pthread_t-- Check size of pthread_t - done-- Performing Test HAVE_PEERCRED-- Performing Test HAVE_PEERCRED - Success-- Library mysqlclient depends on OSLIBS -lpthread;z;m;rt;/usr/lib64/libssl.so;/usr/lib64/libcrypto.so;dl-- Configuring done-- Generating done-- Build files have been written to: /usr/local/mysql-5.5.40
我們繼續
[[email protected] mysql-5.5.40]# make....(此處省略一萬字)Scanning dependencies of target udf_example[100%] Building C object sql/CMakeFiles/udf_example.dir/udf_example.c.oLinking C shared module udf_example.so[100%] Built target udf_exampleScanning dependencies of target my_safe_process[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.oLinking CXX executable my_safe_process[100%] Built target my_safe_process
如果沒有報錯,我們繼續
[[email protected] mysql-5.5.40]# make install....(此處省略一萬字)-- Installing: /usr/local/mysql-5.5.40/man/man1/mysql_upgrade.1-- Installing: /usr/local/mysql-5.5.40/man/man1/mysqlslap.1-- Installing: /usr/local/mysql-5.5.40/man/man1/replace.1-- Installing: /usr/local/mysql-5.5.40/man/man1/mysql.1-- Installing: /usr/local/mysql-5.5.40/man/man1/mysql_setpermission.1-- Installing: /usr/local/mysql-5.5.40/man/man1/mysql_secure_installation.1-- Installing: /usr/local/mysql-5.5.40/man/man1/mysqlimport.1-- Installing: /usr/local/mysql-5.5.40/man/man8/mysqld.8
全部安裝ok之後我們來配置下文檔的許可權
[[email protected] mysql-5.5.40]# chown :mysql /usr/local/mysql-5.5.40 -R[[email protected] mysql-5.5.40]# cd /usr/local/mysql-5.5.40/[[email protected] mysql-5.5.40]# chmod +x scripts/mysql_install_db[[email protected] mysql-5.5.40]# scripts/mysql_install_db --user=mysql --datadir=/var/data/mysql/ #執行初始化指令碼....(此處省略一萬字)./bin/mysqladmin -u root password ‘new-password‘./bin/mysqladmin -u root -h diguojin password ‘new-password‘Alternatively you can run:./bin/mysql_secure_installationwhich will also give you the option of removing the testdatabases and anonymous user created by default. This isstrongly recommended for production servers.See the manual for more instructions.You can start the MySQL daemon with:cd . ; ./bin/mysqld_safe &You can test the MySQL daemon with mysql-test-run.plcd ./mysql-test ; perl mysql-test-run.plPlease report any problems at http://bugs.mysql.com/
如果你獲得的資訊和上面一樣的話, 恭喜你, 你又離成功近了一步
[[email protected] mysql-5.5.40]# ls /var/data/mysql/ #看一下是否產生了檔案mysql performance_schema test#如果是這樣那麼我們繼續
建立服務指令碼
[[email protected] mysql-5.5.40]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [[email protected] mysql-5.5.40]# chmod +x /etc/rc.d/init.d/mysqld #添加mysqld執行許可權[[email protected] mysql-5.5.40]# chkconfig --add mysqld #添加開機啟動
建立設定檔
[[email protected] mysql-5.5.40]# mv /etc/my.cnf{,.bak}[[email protected] mysql-5.5.40]# cp support-files/my-large.cnf /etc/my.cnf[[email protected] mysql-5.5.40]# vim /etc/my.cnf#找到如下部分[mysqld]port = 3306socket = /tmp/mysql.sockskip-external-lockingkey_buffer_size = 256Mmax_allowed_packet = 1Mtable_open_cache = 256sort_buffer_size = 1Mread_buffer_size = 1Mread_rnd_buffer_size = 4Mmyisam_sort_buffer_size = 64Mthread_cache_size = 8query_cache_size= 16M# Try number of CPU‘s*2 for thread_concurrencythread_concurrency = 8datadir= /var/data/mysql #添加次行內容, 就是資料庫檔案存放路徑:wq#儲存退出[[email protected] mysql-5.5.40]# vim /etc/profile.d/mysql.shexport PATH=/usr/local/mysql-5.5.40/bin:$PATH #添加次行[[email protected] mysql-5.5.40]# . /etc/profile.d/mysql.sh #匯入環境變數
好了讓我們來嘗試著啟動MySQL服務吧
[[email protected] mysql-5.5.40]# service mysqld startStarting MySQL.. [ OK ][[email protected] mysql-5.5.40]#
距離勝利越來越近了,加油^^
然後我們來配置MySQL管理員密碼進行初始化
[[email protected] mysql-5.5.40]# mysql #使用用戶端登入Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.5.40-log Source distributionCopyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.#刪除預設存在的賬戶mysql> delete from mysql.user where host!=‘localhost‘; Query OK, 4 rows affected (0.00 sec)#修改root管理員帳號密碼mysql> update mysql.user set password=PASSWORD(‘[email protected]‘) where user=‘root‘; Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0#更新資料庫mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)#看一下修改後的結果mysql> select user,password,host from mysql.user;+------+-------------------------------------------+-----------+| user | password | host |+------+-------------------------------------------+-----------+| root | *D7E39C3AF517EC9EF7086223B036E0B4F22821F8 | localhost || | | localhost |+------+-------------------------------------------+-----------+2 rows in set (0.00 sec)mysql> \qBye[[email protected] mysql-5.5.40]#
然後我們就可以使用新密碼登陸了
[[email protected] mysql-5.5.40]# mysql -u root -h localhost -pEnter password: #輸入剛才設定的密碼Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.5.40-log Source distributionCopyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.mysql>
好了MySQL到此 就安裝成功了!! 感謝大家!!
對了我們忘記了匯入開發的庫檔案了, ok 很快就好
[[email protected] mysql-5.5.40]# ln -sv /usr/local/mysql/include/ /usr/include/mysql #軟串連到系統庫中[[email protected] mysql-5.5.40]# vim /etc/ld.so.conf.d/mysql.conf #編輯這個檔案, 並且添加如下路徑/usr/local/mysql-5.5.40/lib[[email protected] mysql-5.5.40]# ldconfig #重新載入庫檔案[[email protected] mysql-5.5.40]# ldconfig -p | grep mysql #讓我們來檢查下是不是載入好了libmysqlclient_r.so.16 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient_r.so.16libmysqlclient.so.18 (libc6,x86-64) => /usr/local/mysql-5.5.40/lib/libmysqlclient.so.18libmysqlclient.so.16 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.16libmysqlclient.so (libc6,x86-64) => /usr/local/mysql-5.5.40/lib/libmysqlclient.so
好的, 大家辛苦了~ MySQL5.5.40 編譯安裝完成
本文出自 “帝國金菜園子” 部落格,請務必保留此出處http://diguojin.blog.51cto.com/5034509/1562325
centos 6.5 編譯安裝 mysql 5.5.40