前几天接到邮件通知,MySQL 5.6.x 的分支发布了最新的测试版,也是第八个里程碑版本。值得一提的是,该次的版本,已经无限接近beta.
此外,nginx 由于爆了一个MP4 模块的内存的漏洞——CVE-2012-2089,当该模块被编译进去,并使用时,有被允许执行任意代码的风险。
具体见:http://nginx.org/en/security_advisories.html
注:如果我没记错的话,这已经是nginx这两个月以来,爆出的第二个漏洞了。
鉴于这两种情况,故而觉得很有必要升级更新。
下载这二者源码包,
7 wget http://dev.mysql.com/get/Downloads/MySQ ... ror/mysql/
9 wget http://nginx.org/download/nginx-1.1.19.tar.gz
删除旧版本文件:
[root@PowerPC pub]# rm mysql*
rm: remove regular file `mysql-5.6.4-m7.tar.gz'? y
rm: remove regular file `mysql-5.6.5-m8.tar.gz'? n
[root@PowerPC pub]# rm nginx*
rm: remove regular file `nginx-1.1.17.tar.gz'? y
rm: remove regular file `nginx-1.1.19.tar.gz'? n
之外,使用mysqldump 备份下数据库,以便之后恢复.
首先是MySQL,解压,进入目录。
我的cmake 参数:
[root@PowerPC mysql-5.6.5-m8]# cmake . \
> -DCMAKE_BUILD_TYPE:STRING=Release \
> -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql \
> -DCMAKE_USE_RELATIVE_PATHS:BOOL=ON \
> -DCOMMUNITY_BUILD:BOOL=ON \
> -DDISABLE_SHARED:BOOL=OFF \
> -DENABLED_PROFILING:BOOL=ON \
> -DENABLE_DEBUG_SYNC:BOOL=OFF \
> -DINNODB_COMPILER_HINTS:BOOL=OFF \
> -DINSTALL_BINDIR:STRING=../bin \
> -DINSTALL_DOCDIR:STRING=docs \
> -DINSTALL_DOCREADMEDIR:STRING=docs \
> -DINSTALL_INCLUDEDIR:STRING=include \
> -DINSTALL_INFODIR:STRING=docs \
> -DINSTALL_LAYOUT:STRING=STANDALONE \
> -DINSTALL_LIBDIR:STRING=lib \
> -DINSTALL_MANDIR:STRING=man \
> -DINSTALL_MYSQLDATADIR:STRING=data \
> -DINSTALL_MYSQLSHAREDIR:STRING=share \
> -DINSTALL_MYSQLTESTDIR:STRING=mysql-test \
> -DINSTALL_PLUGINDIR:STRING=lib/plugin \
> -DINSTALL_SBINDIR:STRING=../sbin \
> -DINSTALL_SCRIPTDIR:STRING=scripts \
> -DINSTALL_SHAREDIR:STRING=share \
> -DINSTALL_SQLBENCHDIR:STRING=bench \
> -DINSTALL_SUPPORTFILESDIR:STRING=support-files \
> -DMANUFACTURER:STRING='Built from Source by Sharl' \
> -DMYSQL_DATADIR:PATH=/usr/local/mysql/data \
> -DSYSCONFDIR:PATH=/etc/sysconfig/mysql/ \
> -DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_EMBEDDED_SERVER:BOOL=OFF \
> -DWITH_EXTRA_CHARSETS:STRING=all \
> -DWITH_FEDERATED_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON \
> -DWITH_LIBEDIT:BOOL=ON \
> -DWITH_LIBWRAP:BOOL=OFF \
> -DWITH_PARTITION_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_SSL:STRING=no \
> -DWITH_UNIT_TESTS:BOOL=OFF \
> -DWITH_ZLIB:STRING=bundled
有几点要注意的是:
1.readline 已经从该版本开始,被移除了。只剩libedit了。
2.该版本不能启用用于tcp 的 libwrap。否则在编译的时候会报错。
见下:
所以,如果遇到了该错误。只能暂时禁用掉。
之后清除缓存:
make clean
rm CMakeCache.txt
再次编译,即可.
make 成功后,make install 安装至指定目录.
之后,运行scripts 文件夹下的mysql_install_db 脚本,初始化数据库。
然后运行 mysql_secure_installation,设置root 密码,删除测试表等。
最后,导入之前备份的数据库SQL文件。
若有需要,重新授权库/表.
还有,如果用到了pam_mysql 验证的话,则位于/lib/security/ 下的 pam_mysql.so 文件也需要重新编译。
下载pam_mysql的源码,解压,编译,参数里指定mysql 的主目录。
运行 make,就可以生成新的 pam_mysql.so 链接库了。替换即可。
别忘了 重建链接库表。
ldconfig -v
接下来是nginx,解压,进入目录:
我的configure:
[root@PowerPC nginx-1.1.19]# ./configure \
> --prefix=/usr/local/nginx \
> --sbin-path=/usr/local/sbin/nginx \
> --conf-path=/etc/sysconfig/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --pid-path=/var/run/nginx.pid \
> --lock-path=/var/run/nginx.lock \
> --user=http \
> --group=web \
> --with-select_module \
> --with-poll_module \
> --with-http_xslt_module \
> --with-http_image_filter_module \
> --with-http_dav_module \
> --with-http_flv_module \
> --with-http_mp4_module \
> --with-http_gzip_static_module \
> --without-http_ssi_module \
> --without-http_geo_module \
> --without-http_map_module \
> --without-http_rewrite_module \
> --without-http_proxy_module \
> --without-http_fastcgi_module \
> --without-http_uwsgi_module \
> --without-http_scgi_module \
> --http-log-path=/var/log/nginx/access.log \
> --http-client-body-temp-path=/tmp/nginx/request \
> --without-mail_pop3_module \
> --without-mail_imap_module \
> --without-mail_smtp_module \
> --with-pcre
系统给出编译概况:
确认无误,make && make install.编译安装。
之后,恢复下之前备份的配置文件 nginx.conf.
检查下版本:
[root@PowerPC /]# nginx -v
nginx version: nginx/1.1.19
正确。
重启服务器,一切正常。
至此,升级工作完成。
此外,nginx 由于爆了一个MP4 模块的内存的漏洞——CVE-2012-2089,当该模块被编译进去,并使用时,有被允许执行任意代码的风险。
具体见:http://nginx.org/en/security_advisories.html
注:如果我没记错的话,这已经是nginx这两个月以来,爆出的第二个漏洞了。
鉴于这两种情况,故而觉得很有必要升级更新。
下载这二者源码包,
7 wget http://dev.mysql.com/get/Downloads/MySQ ... ror/mysql/
9 wget http://nginx.org/download/nginx-1.1.19.tar.gz
删除旧版本文件:
[root@PowerPC pub]# rm mysql*
rm: remove regular file `mysql-5.6.4-m7.tar.gz'? y
rm: remove regular file `mysql-5.6.5-m8.tar.gz'? n
[root@PowerPC pub]# rm nginx*
rm: remove regular file `nginx-1.1.17.tar.gz'? y
rm: remove regular file `nginx-1.1.19.tar.gz'? n
之外,使用mysqldump 备份下数据库,以便之后恢复.
首先是MySQL,解压,进入目录。
我的cmake 参数:
[root@PowerPC mysql-5.6.5-m8]# cmake . \
> -DCMAKE_BUILD_TYPE:STRING=Release \
> -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql \
> -DCMAKE_USE_RELATIVE_PATHS:BOOL=ON \
> -DCOMMUNITY_BUILD:BOOL=ON \
> -DDISABLE_SHARED:BOOL=OFF \
> -DENABLED_PROFILING:BOOL=ON \
> -DENABLE_DEBUG_SYNC:BOOL=OFF \
> -DINNODB_COMPILER_HINTS:BOOL=OFF \
> -DINSTALL_BINDIR:STRING=../bin \
> -DINSTALL_DOCDIR:STRING=docs \
> -DINSTALL_DOCREADMEDIR:STRING=docs \
> -DINSTALL_INCLUDEDIR:STRING=include \
> -DINSTALL_INFODIR:STRING=docs \
> -DINSTALL_LAYOUT:STRING=STANDALONE \
> -DINSTALL_LIBDIR:STRING=lib \
> -DINSTALL_MANDIR:STRING=man \
> -DINSTALL_MYSQLDATADIR:STRING=data \
> -DINSTALL_MYSQLSHAREDIR:STRING=share \
> -DINSTALL_MYSQLTESTDIR:STRING=mysql-test \
> -DINSTALL_PLUGINDIR:STRING=lib/plugin \
> -DINSTALL_SBINDIR:STRING=../sbin \
> -DINSTALL_SCRIPTDIR:STRING=scripts \
> -DINSTALL_SHAREDIR:STRING=share \
> -DINSTALL_SQLBENCHDIR:STRING=bench \
> -DINSTALL_SUPPORTFILESDIR:STRING=support-files \
> -DMANUFACTURER:STRING='Built from Source by Sharl' \
> -DMYSQL_DATADIR:PATH=/usr/local/mysql/data \
> -DSYSCONFDIR:PATH=/etc/sysconfig/mysql/ \
> -DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_EMBEDDED_SERVER:BOOL=OFF \
> -DWITH_EXTRA_CHARSETS:STRING=all \
> -DWITH_FEDERATED_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON \
> -DWITH_LIBEDIT:BOOL=ON \
> -DWITH_LIBWRAP:BOOL=OFF \
> -DWITH_PARTITION_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=OFF \
> -DWITH_SSL:STRING=no \
> -DWITH_UNIT_TESTS:BOOL=OFF \
> -DWITH_ZLIB:STRING=bundled
有几点要注意的是:
1.readline 已经从该版本开始,被移除了。只剩libedit了。
2.该版本不能启用用于tcp 的 libwrap。否则在编译的时候会报错。
见下:
[ 96%] Building CXX object sql/CMakeFiles/sql.dir/mysqld.cc.o
mysqld.cc: In function ‘void handle_connections_sockets()’:
mysqld.cc:5851: error: ‘connection_tcpwrap_errors’ was not declared in this scope
make[2]: *** [sql/CMakeFiles/sql.dir/mysqld.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2
所以,如果遇到了该错误。只能暂时禁用掉。
之后清除缓存:
make clean
rm CMakeCache.txt
再次编译,即可.
make 成功后,make install 安装至指定目录.
之后,运行scripts 文件夹下的mysql_install_db 脚本,初始化数据库。
然后运行 mysql_secure_installation,设置root 密码,删除测试表等。
最后,导入之前备份的数据库SQL文件。
若有需要,重新授权库/表.
还有,如果用到了pam_mysql 验证的话,则位于/lib/security/ 下的 pam_mysql.so 文件也需要重新编译。
下载pam_mysql的源码,解压,编译,参数里指定mysql 的主目录。
运行 make,就可以生成新的 pam_mysql.so 链接库了。替换即可。
别忘了 重建链接库表。
ldconfig -v
接下来是nginx,解压,进入目录:
我的configure:
[root@PowerPC nginx-1.1.19]# ./configure \
> --prefix=/usr/local/nginx \
> --sbin-path=/usr/local/sbin/nginx \
> --conf-path=/etc/sysconfig/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --pid-path=/var/run/nginx.pid \
> --lock-path=/var/run/nginx.lock \
> --user=http \
> --group=web \
> --with-select_module \
> --with-poll_module \
> --with-http_xslt_module \
> --with-http_image_filter_module \
> --with-http_dav_module \
> --with-http_flv_module \
> --with-http_mp4_module \
> --with-http_gzip_static_module \
> --without-http_ssi_module \
> --without-http_geo_module \
> --without-http_map_module \
> --without-http_rewrite_module \
> --without-http_proxy_module \
> --without-http_fastcgi_module \
> --without-http_uwsgi_module \
> --without-http_scgi_module \
> --http-log-path=/var/log/nginx/access.log \
> --http-client-body-temp-path=/tmp/nginx/request \
> --without-mail_pop3_module \
> --without-mail_imap_module \
> --without-mail_smtp_module \
> --with-pcre
系统给出编译概况:
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ md5: using system crypto library
+ sha1: using system crypto library
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/sbin/nginx"
nginx configuration prefix: "/etc/sysconfig/nginx"
nginx configuration file: "/etc/sysconfig/nginx/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/tmp/nginx/request"
确认无误,make && make install.编译安装。
之后,恢复下之前备份的配置文件 nginx.conf.
检查下版本:
[root@PowerPC /]# nginx -v
nginx version: nginx/1.1.19
正确。
重启服务器,一切正常。
至此,升级工作完成。