我使用的mysql版本是5.5.31。自从mysql5.5.8之后,mysql的源码包编译安装都要用到cmake来进行编译了,编译的过程没有本质的区别,但是要直观很多。本片教程我们就一起来看一下如何在linux下编译mysql。
准备安装依赖包:
tar zxvf ncurses-5.6.tar.gz
cd
ncurses-5.6
./configure –prefix=/usr –with-shared
–without-debug
make
make install clean
1,编译安装cmake。
#wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz
#tar cmake-2.8.4.tar.gz
#cd cmake-2.8.4
#./configure
-DWITH_SSL=system 必须指定,否则mysql安装不下去
#make && make install
1.1使用cmake编译mysql-5.5
cmake指定编译选项的方式不同于make,其实现方式对比如下:
./configure cmake .
./configure --help cmake . -LH or ccmake .
指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT__STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
其它常用的选项:
-DMYSQL_TCP_PORT=3306
-DMYSQL_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
如果想清理此前的编译所生成的文件,则需要使用如下命令:
make clean
rm CMakeCache.txt
2,创建目录,用户和权限。
#mkdir -p /usr/local/mysql
#建立mysql安装目录
#mkdir -p /data/mysql
#建立mysql数据库目录
#groupadd mysql
#添加mysql组
#useradd -g msyql msyql
#添加一个mysql用户并加入到mysql组中
#chown -R mysql.mysql /data/mysql
#将/data/mysql目录的所有权赋予mysql组中的mysql用户
3,安装mysql
#cd mysql-5.5.28
#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1 -DENABLED_LOCAL_I*ILE=1
-DMYSQL_DATADIR=/data/mysql
-DMYSQL_USER=mysql
-DMYSQL_TCP_PORT=3306
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mydata \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
#make &&make install
备注:如果编译时提示找不到CMakeLists.txt,问题在于下载错误了源码包,就这一种可能,别瞎折腾了!
4,配置mysql
#cd /usr/local/mysql
#cp support-files/my-medium.cnf /etc/my.cnf
#如果你的机器的内存教大,可以复制My-huge.cnf文件
#chmod 755 scripts/mysql_install_db
#scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
##初始化数据库
# cp support-files/mysql.server /etc/init.d/mysql
#设置开机启动mysql
#chmod 755 /etc/init.d/mysql
#chkconfig mysql on
#开机启动
#echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
#将mysql的安装路径加入PATH中,方便启动mysql(重启生效)
可以在进程中查看mysql是否启动,完成。
设置一个mysql的root密码
#mysqlamdin -u root password '123456'
在这里我出现过一个问题:删除mysql 重新安装后会有一些错误。在编译完mysql后启动时会提示Starting
MySQL..The server quit without updating PID file
(/data/mysql/localhost.localdomain.pid
此时需要编辑vi /etc/my.cnf中的[mysqld]模块,在其中加入你的datadir路径如datadir =
/data/mysql
如果路径中没有localhost.localdomain.pid文件可能需要touch一个,然后赋予mysql用户的权限。
最后ps -aux |grep mysql
kill 掉mysql的进程
#/etc/init.d/mysql start 即可