日期:2014-05-16  浏览次数:20845 次

笔记:Install MySQL from a standard source destribution
因为安装Bacula必须先安装MySQL,所以就从mysql官网 下载了mysql-5.5.15-linux2.6-x86_64.tar.gz,准备自己编译安装MySQL。
shell> tar xvfz mysql-5.5.15-linux2.6-x86_64.tar.gz

解压以后,没有找到configure和Makefile文件,因此Bacula文档里介绍的MySQL安装和配置方法可能已经过时了。

于是只好自己看源码目录下的INSTALL-SOURCE文档了,文档非常详细。

在使用源码安装MySQL之前,必须确保系统安装了以下工具:

  • CMake,可以去官网 下载源码
  • GNU make
  • gcc and g++
  • Perl,如果想运行测试脚本,就需要perl
  • tar,gzip等打包和压缩工具

我使用的ubuntu 11.04已经自带了除cmake以外的所有工具,所以只要安装cmake。安装cmake非常简单,在cmake源码包里有个Readme.txt文件介绍安装方法。

shell> ./bootstrap; make; make install
运行这三个命令就行了,如果想自定义安装目录等选项,可以用./bootstrap设置。
MySQL源码目录中的INSTALL-SOURCE文档给了一个安装命令顺序:
# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions
# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
当我执行cmake .时,出错了,出错信息真的很详细。
-- 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.
在ubuntu下的解决办法就是用apt-get安装之,删除缓存文件,再重新cmake。
shell> sudo apt-get install libncurses5-dev
shell> rm CMakeCache.txt
shell> cmake .
期间警告Bison未找到,根据文档的意思,这是可以忽略的。

接着make和make install都很正常,但是手动运行mysql_install_db创建grant table时再次出错了。

FATAL ERROR: Could not find mysqld

google一下,可能是因为早上用Ubuntu Software Center卸载MySQL不干净,在/etc/mysql目录下发现有一个my.cnf文件,删除即可。

最后用mysqld_safe --user=mysql启动daemon。

这时mysql应该已经启动了,文档又提供一些有趣的命令来验证mysql确实正常启动。

  1. 使用mysqladmin version验证服务器在运行。
  2. 使用mysqladmin -u root shutdown关闭服务器。
  3. 使用mysqld_safe或者mysqld重新启动。
  4. 使用mysqlshow和mysql -e "select * from TABLE DATABASE"从数据库获取信息。