FeiYan

网站导航

搜索

腾讯微博 新浪微博 FeelBLog 开源中国社区

Linux/Ubuntu下CMake编译MySQL

2012-10-25 15:43:11     1个评论     10984次访问

Ubuntu下习惯了使用tasksel在开发机和测试机安装LAMP服务,源码编译MySQL则可以自定义很多设置,所以多用于生产环境。MySQL在5.5之前使用configure方式进行编译,这种方式用的比较多,都比较熟悉了,不过从5.5开始,MySQL开始使用CMake进行编译,除了需要多安装一个cmake、编译选项不同以外倒是也没什么大的差别,下面是我编译MySQL 5.5.28的过程(还是以Ubuntu为例,推荐使用64位系统)。

由此可见Vim在程序猿界的地位之高,这话虽然说的有点过了,但是不得不说Vim用习惯以后确实非常方便,我从去年受某大师的影响开始使用Vim,并且逐渐成为开发PHP的主要编辑器(Linux下我偶尔会使用Komode Edit,Windows下我使用EditPlus和ZendStudio),在项目比较繁忙的时候,使用Linux+Vim写PHP简直是一种享受。下面是我的Vim配置和安装的插件。

1. 下载MySQL 5.5.28源码包

下载地址:http://www.mysql.com/downloads/mysql/#downloads

在MySQL下载页面的下拉框选择“Source Code”,然后选择最下面的tar.gz格式,开始下载。wget开始可以使用:http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.28.tar.gz这个地址。

2. 添加MySQL用户和组
sudo groupadd mysql
sudo useradd -r -g mysql mysql
3. 安装一些需要的软件
sudo apt-get install cmake automake autoconf libtool gcc g++ bison

如果只安装上面的扩展,编译过程总会出现这样的错误:-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)  CMake Error at cmake/readline.cmake:83 (MESSAGE): Curses library not found.  Please install appropriate package, remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.,则需要多安装libncurses5-dev包。

sudo apt-get install libncurses5-dev

提示,为了保证速度,请更新Ubuntu源为最快的源:Ubuntu更新源推荐

4. CMake编译MySQL
#创建目录
sudo mkdir /data/mysql/
 
#开始编译(注意下面的命令是一句,实际情况是没有换行的,这里为了方便添加注释)
sudo cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #安装路径
-DMYSQL_DATADIR=/data/mysql/            #数据文件存放位置
-DSYSCONFDIR=/etc                       #my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1          #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1        #支持InnoDB引擎
-DWITH_MEMORY_STORAGE_ENGINE=1          #支持InnoDB引擎
-DWITH_READLINE=1                       #快捷键功能(我没用过)
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock      #连接数据库socket路径
-DMYSQL_TCP_PORT=3306                   #端口
-DENABLED_LOCAL_INFILE=1                #允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1       #安装支持数据库分区
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk   #安装需要的字符集
-DDEFAULT_CHARSET=utf8                  #默认字符
-DDEFAULT_COLLATION=utf8_general_ci     #默认字符集
 
#make安装
sudo make && make install
5. 配置MySQL

这一步中需要注意的是my.cnf的加载顺序,Linux优先级从高到低/etc/my.cnf->/etc/mysql/my.cnf->SYSCONFDIR/my.cnf->$MYSQL_HOME/my.cnf,高优先级的my.cnf设置会覆盖低优先级的my.cnf,所以一般把config文件copy到etc中即可。

#如果/etc下没有my.cnf
sudo cp support-files/my-medium.cnf /etc/my.cnf
 
#设置权限
sudo chmod +x /usr/local/mysql
sudo chown -R mysql.mysql /usr/local/mysql
 
#配置开机自启动
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql
sudo chkconfig –list
sudo update-rc.d mysql defaults `/sbin/chkconfig –add mysql; /sbin/chkconfig mysql on`
sudo chkconfig –list mysql
 
#修改my.cnf配置
vim /etc/my.cnf
 
#[mysqld] 添加:
datadir=/data/mysql
default-storage-engine=MyISAM
 
#以下可选:
log-error = /data/mysql/error.log
pid-file = /home/mysql/mysql.pid
user = mysql
tmpdir = /tmp
 
#安装默认数据表
/usr/local/mysql/scripts/mysql_install_db –basedir=/usr/local/mysql –datadir=/da/mysql –user=mysql
 
#启动MySQL
/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf &
#或者
/etc/init.d/mysql start (service mysql start)
 
#测试MySQL是否启动
# 1)查看是否有进程mysql
ps -ef | grep mysql
# 2)查看端口是否运行
netstat -tnl | grep 3306
# 3)读取mysql版本信息
mysqladmin version
##安装成功,Thanks God!

到此MySQL编译完成,如果这个时候MySQL无法启动,那么多问题基本上都处在my.cnf的位置和设置上。最后进入MySQL修改root用户的密码,当前密码为空:

UPDATE user SET password=PASSWORD("new password") WHERE user='root'; 
FLUSH PRIVILEGES; 

文章标签: linux  ubuntu  cmake  mysql 

本文地址:Linux/Ubuntu下CMake编译MySQL

相关文章

2011-11-03:PHP转换汉字拼音和Unicode

2012-08-20:Linux编译ffmpeg并转换MP3到AMR

2012-08-28:Ubuntu编译Nginx

2012-09-03:高性能网站架构基础篇

2012-09-12:MySQL索引使用方法和性能优化

2012-09-17:Ubuntu编译Yaf

2012-09-19:使用Pecl或Pear安装PHP扩展

2012-09-22:MySQL是否应该使用存储过程

2012-09-26:Ubuntu编译安装Redis和PHPRedis

2012-10-22:Ubuntu更新源推荐

1 Comments »

  1. AGAG
    GOOD,3Q

    2013-01-31 13:32:03   

发布评论

最新评论

  1. SpecsSpecs

    不错~~

  2. zhyzhy

    我也遇到这个问题 不知道是swf 、jcrop 、 uploadify 还是浏览器缓存

  3. java开发java开发

    您好!我按你的源码进行了编,能正常运行,但是我们项目是由java开发的,怎么做才能将生成的一个可执行文件?我想把这个文件放到服务器上直接运行,不想安装~