您的位置:首页 > 运维架构 > Linux

CentOS-5.4-i386-bin-DVD源码安装mysql-5.6.17

2014-05-25 12:04 651 查看
需要使用cmake编译mysql-5.6.17

cmake下载地址:http://www.cmake.org/files/v2.8/

此次下载cmake version 2.8.10.2

首先解压cmake-2.8.10.2.tar.gz

使用命令tar zxvf cmake-2.8.10.2.tar.gz

新建一个文件夹cmake-build来编译,这样重复编译也不会对源码产生影响

mkdir cmake-build

进入cmake-build

cd cmake-build

开始编译

../cmake-2.8.10.2/configure

这时会出现一系列的错误,不过不要紧张

为了能够看全编译过程中的所有输出信息,在这里将重新编译,并把输出的内容,重定向到一个文件中,然后打开文件,仔细检查

touch cmake-building-info.txt 放到和cmake-2.8.10.2平级

cd cmake-build

../cmake-2.8.10.2/configure > cmake-building-info.txt

编译完毕后,打开该文件

首先注意两个地方

C compiler on this system is: gcc

C++ compiler on this system is: g++

The C compiler identification is GNU 4.8.0

The CXX compiler identification is GNU 4.8.0

由于CentOS-5.4上面预装的gcc和g++版本过低

因此,在安装cmake之前需要升级gcc和g++

我会另外写一篇blog来说明如何升级gcc和g++

在这里需要说明的是,升级不完全会造成很多麻烦的,

我曾经就遇到了这样的麻烦

网上有很多帖子介绍如何升级gcc,不过,有个细节一直没有提到

那就是cc 和 c++

因为我们完成gcc的升级后,只移除了旧版本中g++和gcc的软连接,而没有移除cc和c++的软连接

因此需要为cc和c++也要重新建立软连接,否则“The CXX compiler identification is GNU 4.8.0”的版本不会是新版本,仍然保持4.1.2的版本,该版本是无法完成对cmake的安装的

接下来会看到很多依赖没有被发现

CMake 依赖

需要: cURL-7.31.0, libarchive-3.1.2 and expat-2.1.0 (必须确保这些包已经被安装到了该系统中)

可选: Subversion-1.8.0 (for testing) and Qt-4.8.4 (for the Qt-based GUI)

在这里就安装上面三个必须要的包

cURL-7.31.0.tar.gz:http://curl.haxx.se/download/curl-7.36.0.tar.bz2

安装:

tar zxvf cURL-7.31.0.tar.gz

cd cURL-7.31.0

./configure --prefix=/usr \

--disable-static \

--enable-threaded-resolver &&

make

make install &&

find docs \( -name "Makefile*" -o -name "*.1" -o -name "*.3" \) -exec rm {} \; &&

install -v -d -m755 /usr/share/doc/curl-7.36.0 &&

cp -v -R docs/* /usr/share/doc/curl-7.36.0

libarchive-3.1.2.tar.gz 下载地址:http://www.libarchive.org/downloads/libarchive-3.1.2.tar.gz

安装:

tar zxvf libarchive-3.1.2.tar.gz

cd libarchive-3.1.2

./configure --prefix=/usr --disable-static &&

make

make install

expat-2.1.0.tar.gz 下载地址:http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz/download?use_mirror=nchc

安装:

tar zxvf expat-2.1.0.tar.gz

cd expat-2.1.0

./configure --prefix=/usr --disable-static && make

make install

为了支持ARCHIVE_CRYPTO_MD5_LIBC

可以安装openss-1.0.1g.tar.gz

在这里就不用了

接下来重新编译cmake-2.8.10.2

cd cmake-build

../cmake-2.8.10.2/configure

一切顺利的话将会看到 CMake has bootstrapped. Now run gmake.

接着

gmake或者make都可以的

make install

这样cmake就算安好了

接着就应该安装 mysql-5.6.17.tar.gz

mysql-5.6.17.tar.gz下载地址:http://www.iskm.org/mysql56/pfs__connect__attr-t_8cc_source.html

解压mysql-5.6.17.tar.gz

tar zxvf mysql-5.6.17.tar.gz

mkdir mysql-build

cd mysql-build

cmake ../mysql-5.6.17/.

直接这样装,会出现一系列的错误

Warning: Bison executable not found in PATH
Warning: Ncurses executable not found in PATH
Warning: Googlemock was not found.
如果没有处理好c++软连接还会出现
Unsupported version of GCC/Clang is used which does not support Atomic
这个异常是十分隐蔽的
一个一个的来解决吧!
bison 下载地址:http://www.gnu.org/software/bison/
tar zxvf bison-2.5.tar.gz
cd bison-2.5
./configure
make
make install
ncurses 下载地址:http://www.gnu.org/software/ncurses/
tar zxvf ncurses-5.8.tar.gz
cd ncurses-5.8
./configure
make
make install
第三的一个问题可以使用 -DENABLE_DOWNLOADS=1,这样编译过程中,缺少什么依赖的话就会自动下载
编译时使用 cmake ../mysql-5.6.17/. -DENABLE_DOWNLOADS=1 即可
第四点Unsupported version of GCC/Clang is used which does not support Atomic
该问题的产生源于系统自带的gcc版本过低所致,上文中已经提到过gcc的升级。笔者每次在安装mysql-5.6.x版本的时候,都忽略了
这个错误,主要是太隐蔽了,同时也大意了。因为认为gcc和g++已经升级成功,问题怎么可能会出现在编译器上呢。在网上找了很多解决方案,都无功而返
打开mysql-build这个编译目录,将会看到cmakecache.txt文件。
仔细查看了变量CMAKE_C_COMPILER和CMAKE_CXX_COMPILER
发现CMAKE_C_COMPILER = cc 和CMAKE_CXX_COMPILER = c++
第一次意识到操作系统中不只有gcc和g++还有cc和c++
然后通过命令cc -v 和 c++ -v 检查了版本信息
发现cc 正确连接到了升级后的版本 而 c++此时仍然连接到老本,一切都豁然开朗了。
4.1.2版本还不支持原子操作,这就是问题的根源,重新为c++建立软连接以后,就好了

闲话少叙,进入安装
首先创建用户
groupadd mysql
useradd -r -g mysql mysql

解压安装
cd cmake-build
cmake -DENABLE_DOWNLOADS=1 ../mysql-5.6.17/. \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data \ #数据文件存放位置
-DSYSCONFDIR=/etc \ #my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #支持InnoDB引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \ #支持Memory引擎
-DWITH_READLINE=1 \ #快捷键功能(我没用过)
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ #连接数据库socket路径
-DMYSQL_TCP_PORT=3306 \ #端口
-DENABLED_LOCAL_INFILE=1 \ #允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1 \ #安装支持数据库分区
-DEXTRA_CHARSETS=all \ #安装所有的字符集
-DDEFAULT_CHARSET=utf8 \ #默认字符
-DDEFAULT_COLLATION=utf8_general_ci

一切顺利的话,将会看到

Performing Test HAVE_NO_NULL
Performing Test HAVE_NO_NULL - success
Performing Test HAVE_NO_UNUSED_TYPEDEFS
Performing Test HAVE_NO_UNUSED_TYPEDEFS - success

make #这个过程接近一个小时
笔者在这个过程中还遇到了fatal error: error closing /tmp/ccsdc7Zt.s: No space left on device
解决方案:
mkdir 文件夹——你可以使用的文件夹 比如说 mkdir /abc/tmp/
然后只要export TMPDIR=/abc/tmp/
这样就不会出现 tmp文件夹不够用的情况了

或者清空/tmp目录下的数据

make clean
重新make
make install

完成后,继续下面的操作
cd /usr/local/mysql
chown -R mysql:mysql . (为了安全安装完成后请修改权限给root用户)
scripts/mysql_install_db --user=mysql -ldata=/data/mysql/(先进行这一步再做如下权限的修改)
chown -R root:mysql . (将权限设置给root用户,并设置给mysql组, 取消其他用户的读写执行权限,仅留给mysql "rx"读执行权限,其他用户无任何权限)
chown -R mysql:mysql ./data (给数据库存放目录设置成mysql用户mysql组,并赋予chmod -R ug+rwx 读写执行权限,其他用户权限一律删除仅给mysql用户权限)

继续
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql
chown -R root .

可选操作
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf (并给/etc/my.cnf +x权限 同时删除 其他用户的写权限,仅仅留给root 和工作组 rx权限,其他一律删除连rx权限都删除)

修改my.cnf配置
vi /etc/my.cnf
#[mysqld] 添加:
datadir=/data/mysql #mysql错误日志 localhost.localdomain.err 启动pid localhost.localdomain.pid 以及数据库文件均在此目录中
default-storage-engine=MyISAM #默认数据库引擎

启动mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql &
使用命令netstat -tnl | grep 3306 或者 netstat -apn | grep 3306
查看是否启动成功

为了能通过
service mysql start
需要cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
其中mysql.server 就是官方提供的快速启动服务的脚本
如果希望开机自启动的话可以shiyong
chkconfig --add mysql 加入开机自启动
chkconfig --del mysql 删除开机自启动
通过 service mysql 就可以查看支持的操作

修改密码
cd /usr/local/mysql
./bin/mysqladmin -u root password
回车就可以输入密码了
通过mysqladmin version读取版本信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: