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

需要使用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读取版本信息











你可能感兴趣的:(linux,工具安装)