第一部分:首先編譯安裝openssl
mysql
1.首先須要建立mysql用戶nginx
shell>groupadd mysql shell>useradd -s /sbin/nologin -g mysql mysql #設置mysql默認bash爲nologin,不容許登陸系統
2.依賴關係c++
shell>yum install ncurses shell>yum install ncurses-devel shell>yum install gcc libgcc gcc-c++ compat-gcc shell>yum install libtool libtool-ltdl-devel
3.編譯安裝opensslsql
shell>wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz shell>tar -zxvf openssl-1.0.1f.tar.gz shell>cd openssl-1.0.1f shell>./config -fPIC#不添加-fPIC參數,在make mysql階段會報錯 shell>make && make install #openssl默認安裝位置在/usr/local/ssl
##error1shell
在編譯openssl時數據庫
../include/violite.h:98:30: 錯誤:openssl/opensslv.h:沒有那個文件或目錄vim
../include/violite.h:114:25: 錯誤:openssl/ssl.h:沒有那個文件或目錄centos
../include/violite.h:115:25: 錯誤:openssl/err.h:沒有那個文件或目錄bash
In file included from libmysql.c:30:服務器
../include/violite.h:127: 錯誤:expected specifier-qualifier-list before ‘SSL_CTX’
make[2]: *** [libmysql.lo] 錯誤 1
make[2]: Leaving directory `/root/nginx/mysql-5.5.3-m3/libmysql'
make[1]: *** [all] 錯誤 2
make[1]: Leaving directory `/root/nginx/mysql-5.5.3-m3/libmysql'
make: *** [all-recursive] 錯誤 1
解決:
shell>yum install openssl*
##error2
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [openssl.so] Error 1
解決:
#從新編譯openssl,加上-fPIC參數 shell>.config -fPIC
3./configure 參數配置
---------------------------------------------
#加載openssl路徑
shell>LDFLAGS="-L/usr/local/ssl/lib" CFLAGS="-I/usr/local/ssl/include" CPPFLAGS="-I/usr/local/ssl/include" CXXFLAGS="-I/usr/local/ssl/include" #centos上測試不帶這條也能夠
#配置
shell>./configure --prefix=/usr/local/mysql --datadir=/data/mysql --with-charset=utf8 --with-extra-charsets=complex --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --with-pthread --with-ssl=/usr/local/ssl --enable-assembler --with-plugins=partition,archive,csv,federated,heap,innobase,myisam,myisammrg --with-mysqld-user=mysql
---------------------------------------------
##配置各項解釋:
--prefix=/usr/local/mysql #基本安裝目錄
--datadir=/data/mysql #數據文件安裝目錄
--with-tcp-port=3306 #mysqld服務默認監聽端口爲3306,能夠在這裏指定一個端口
--with-charset=utf8 --with-extra-charsets=complex #字符編碼設置
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock #mysql.sock用於服務器和客戶機之間的通訊,默認位置在/tmp/mysql.sock
--with-pthread --with-ssl=/usr/local/ssl #選擇前一步驟中openssl的安裝路徑
--enable-assembler #To build the embedded MySQL library (libmysqld.a), use the
#--with-embedded-server option --with-plugins=partition,archive,csv,federated,heap,innobase,myisam,myisammrg --with-mysqld-user=mysql
4.編譯安裝
shell>make %% make install
5.安裝後配置
##更改權限
shell>chown mysql.mysql /usr/local/mysql -R shell>chown mysql.mysql /data/mysql -R
##複製配置文件
shell>cd /home/mysql-5.1.70 shell>cp mysql-5.1.70/support-files/my-large.cnf /etc/my.cnf
##添加datadir
shell>vim /etc/my.cnf datadir=/data/mysql
#複製mysqld啓動腳本
shell>cp mysql-5.1.70/support-files/mysql.server /etc/init.d/mysqld shell>chmod 755 /etc/init.d/mysqld
#初始化數據庫
shell>/usr/local/mysql/bin/mysql_install_db --user=mysql
登陸
shell>/usr/local/mysql/bin/mysql -uroot -p
修改密碼
shell>/usr/local/mysql/bin/mysqladmin -u root password 'mysql'
5.添加ssl支持
shell>/usr/local/mysql/bin/mysql -uroot -p
#顯示ssl狀態
shell>show ariables like '%ssl%'; mysql> show variables like '%ssl%'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | +---------------+----------+
#啓用ssl
shell>/etc/init.d/mysqld stop shell>vim /etc/my.cnf
#在[mysqld]下添加一行
ssl
#啓動mysqld 再次查看
mysql> show variables like '%ssl%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | +---------------+-------+
6.安裝innodb_plugin 支持
#innodb_plugin 已經被內置在mysql安裝目錄下的/lib/mysql/plugin/中
#關閉mysqld
shell>/etc/init.d/mysqld stop
#編輯配置文件,添加下面幾行
shell>vim /etc/my.cnf ignore_builtin_innodb plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so
#重啓mysqld
shell>/etc/init.d/mysqld restart shell>/usr/local/mysql/bin/mysql -uroot -p mysql> show plugins; +---------------------+----------+--------------------+---------------------+---------+ | Name | Status | Type | Library | License | +---------------------+----------+--------------------+---------------------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | ha_innodb_plugin.so | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so | GPL | | INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so | GPL | | INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so | GPL | +---------------------+----------+--------------------+---------------------+---------+ 16 rows in set (0.00 sec)