ubuntu11.10源代码编译安装mysql5.5.20(记录和给自己的备份)

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
基友团团长
帖子: 1
注册时间: 2012-02-12 3:02

ubuntu11.10源代码编译安装mysql5.5.20(记录和给自己的备份)

#1

帖子 基友团团长 » 2012-02-12 3:07

在ubuntu11.10中通过 apt-get install mysql-server 只能安装到mysql5.1版本的,现在mysql5.5.20都出来了,ubuntu一点动静都没有,没办法只能自己动手了。
在实验室那群损友的怂恿下,通过源代码编译安装我成功花费了12个小时。现在时间是北京时间凌晨5点,怂恿我的人现在全都在睡觉。

经验得来不易,听说几大运营商不容易倒闭,先写成日志挂在网上好了。

源代码编译安装网络上的教程有但是我试了一遍都没成功,估计我悟性不够,只能自己慢慢摸索了。

此次源代码编译安装的参考文献如下:

mysql官方帮助文档
http://dev.mysql.com/doc/refman/5.5/en/ ... ation.html

其中2.9.2包含了推荐使用的命令,基本上用的也是那么多了
###################################################################

# 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

###################################################################

4.4.3是mysql_install_db的命令解释和说明

在其中需要使用的 cmake 命令的mysql官方指导和解释

地址:http://forge.mysql.com/wiki/Autotools_t ... tion_Guide

其余参考资料都是通过百度搜索 关键字“ubuntu源代码编译安装mysql”得来
其中来自ubuntu中文社区的一篇名为《ubuntu 10.04 MySQL 5.5.11 源代码编译安装——详细过程——折腾手记 》演示了他的安装过程
地址:http://forum.ubuntu.org.cn/viewtopic.php?f=44&t=330121

其他的资料比较杂也是到处转载的这里就不指明了,下面该说的也都说清楚

我的系统是ubuntu11.10 32位,使用图形界面
需要源代码包从官方下载
下载方式地址:http://dev.mysql.com/downloads/mysql/
Select Platform时选择Source Code
下载
Generic Linux (Architecture Independent), Compressed TAR Archive
(mysql-5.5.20.tar.gz)

得到一个mysql-5.5.20.tar.gz归档文件
使用系统自带的解压文件,解压缩得到一个 mysql-5.5.20文件夹

在安装之前先安装几个编译套件

安装包编译套件

sudo apt-get install libncurses5-dev (我忘了这个是在哪里需要的了,不是cmake时候就是make的时候,如果你没有安装他会提醒你的注意看输出的信息就行)
sudo apt-get install build-essntial (这个是c和c++的编译器以及所需要的库,实在不明白就百度吧。我在学校为了上外网在安装openkeeper的时候已经安装了)
sudo apt-get install cmake (这个是mysql的新自动化构建系统,其余问百度)

在网上有的还说要安装libaio-dev,我在安装过程中没有接收到这个提示,不知道是已经安装了,还是怎么样,我在翻看mysql文件的时候发现如下代码

在mysql-5.5.20/cmake/build_configurations/ mysql_release.cmake

########################################################################
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
IF(NOT IGNORE_AIO_CHECK)
# Ensure aio is available on Linux (required by InnoDB)
CHECK_INCLUDE_FILES(libaio.h HAVE_LIBAIO_H)
CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
IF(NOT HAVE_LIBAIO_H OR NOT HAVE_LIBAIO)
MESSAGE(FATAL_ERROR "
aio is required on Linux, you need to install the required library:

Debian/Ubuntu: apt-get install libaio-dev
RedHat/Fedora/Oracle Linux: yum install libaio-devel
SuSE: zypper install libaio-devel

If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake.
")
ENDIF()
ENDIF()
#########################################################################

不知道是不是这段代码解决了这个问题。

将mysql-5.5.20复制到/tmp目录中(不是必要的,不过我担心中间会出现临时文件什么的,就放在/tmp中,在哪都一样,我在图形界面下直接复制就不上命令了)
在终端操作下 进入/tmp/mysql-5.5.20目录
=========================
cd /tem/mysql-5.5.20
=========================

好下面开始了

第一步:根据官方推荐先建立一个名为mysql 的用户组和一个名为mysql的用户
===========================
sudo groupadd mysql
sudo useradd -r -g mysql mysql
===========================

第二步:执行cmake
==========================
sudo cmake . (注意这里还有一个点)
==========================

在《ubuntu 10.04 MySQL 5.5.11 源代码编译安装——详细过程——折腾手记 》和一些文章中执行cmake的时候都带有参数
比如这样
=======================================
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/mysql \
-DMYSQL_DATADIR=/usr/mysql/data
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DWITH_DEBUG=0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
=======================================
参数的设置和解释有mysql的官方文档
文档地址:http://forge.mysql.com/wiki/Autotools_t ... tion_Guide
(文档都是纯英文的,各个参数意思不明白的可以用google翻译)

更详细的参数见mysql官方文档 2.9.4
地址 :http://dev.mysql.com/doc/refman/5.5/en/ ... tions.html

但是在这里我直接 使用cmake . 这样一切都按照默认的来。
默认中mysql安装在/usr/local/mysql
在这里我不修改的原因是,执行命令后,会在当前目录生成一个CMakeCache.txt文件,你想设置的参数都在里面,可以在此文件中修改各个参数的意义请参考上面的官方文档和翻译,在这里我修改了我的datadir为/home/mysql/data 默认是/usr/local/mysql/data
备注:
1.设置默认字符的我没找到(目前还没发现这个会有什么问题)
2.更多更详细的设置参照官方文档,逐步设置。我刚开始弄不敢改得太多,而且许多我需要的配置在安装好了之后可以在my.cnf中修改


第三步:编译和安装mysql
===========================
sudo make
===========================

===========================
sudo make install
===========================
在这里我没碰到什么问题,但是网络上有的人在这里出问题了

第四步: 安装初始化数据库
进入安装目录 /usr/local/mysql
==========================
cd /usr/local/mysql
==========================

(这里我出问题了)运行mysql安装目录下的文件:scripts/mysql_install_db

==========================================
sudo scripts/mysql_install_db --user=mysql
==========================================

###################################################
FATAL ERROR: Could not find mysqld

The following directories were searched:

/usr/libexec
/usr/sbin
/usr/bin

If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.
######################################################
根据输出的信息,问题是找不到mysql安装的目录,根据提示给这个命令加几个参数

执行
===============================================================================================
sudo scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/home/mysql/data --user=mysql
===============================================================================================


mysql_install_db的参数也有很多,详细参数参考官方文档4.4.3
文档地址:http://dev.mysql.com/doc/refman/5.5/en/ ... ll-db.html
备注:执行mysql自带的命令出错时,直接将命令作为关键字搜索比如“mysql_install_db”,但是百度的话一般找不到官方文档,但是在百度搜索之中有一个来自必应的英文搜索结果更容易找到问题的解决方法,缺点是都是英文的。碰到一些问题直接用必应的海外搜索更容易能或者是唯一能找到解决问题的办法。

OK 安装成功,这一步完成,显示如下信息
#############################################################
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h lujianbo password 'new-password'

Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation
#############################################################
不过不用管他,这是一个指导的意见目前没用,我们先把系统启动起来再说

根据2.9.2的指导
第五步是启动我们的mysql
执行
===============================================
sudo cp support-files/my-medium.cnf /etc/my.cnf
===============================================
拷贝我们的配置文件到etc中(这里我不明白为什么,有时间了再去弄明白)

接着执行(这里我出现问题了)
==============================
sudo bin/mysqld_safe --user=mysql &
==============================
在这里sudo bin/mysqld_safe --user=mysql & (这个&的意思是在后台运行,百度得来的)

执行过后的输出信息如下
######################################################################################
[1] 29725
lujianbo@lujianbo:/usr/local/mysql$ 120206 03:50:44 mysqld_safe Logging to '/var/log/mysql/error.log'.
touch: 无法创建"/var/log/mysql/error.log": 没有那个文件或目录
chown: 无法访问"/var/log/mysql/error.log": 没有那个文件或目录
120206 03:50:44 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
bin/mysqld_safe: 742: cannot create /var/log/mysql/error.log: Directory nonexistent
eval: 1: cannot create /var/log/mysql/error.log: Directory nonexistent
120206 03:50:44 mysqld_safe mysqld from pid file /var/lib/mysql/lujianbo.pid ended
bin/mysqld_safe: 786: cannot create /var/log/mysql/error.log: Directory nonexistent
######################################################################################

刚刚开始我还以为是我的配置信息出问题了,然后我跳过这个命令
执行(这里我也出现问题了)
=================================
cd support-files/
sudo ./mysql.server start
=================================
然后错误信息提示:
############################################
the server quit without updating PID file
############################################
在这里我纠结了很久,最后我回到之前的那个问题,仔细看了一下问题的原因
touch: 无法创建"/var/log/mysql/error.log": 没有那个文件或目录
chown: 无法访问"/var/log/mysql/error.log": 没有那个文件或目录

然后百度,不知到在哪看到这个问题,然后他就告诉我,是因为没有权限创建日志目录
最后我就人工建一个目录给他

执行
=============================
sudo mkdir /var/log/mysql
=============================

然后接着运行

==============================
sudo bin/mysqld_safe --user=mysql &
==============================

服务器启动成功~~

至此,源代码安装告一段落!接下来出现的问题,接着再慢慢去解决。

最后我再吐槽一下重邮那个该死的网络,在linux下上外网,完全依靠各位先辈大神的智慧结晶
最后要致谢重邮幽幽黄桷兰论坛的unix/linux社区,感谢各位师兄前辈在前面的带路。
最后给自己一个忠告,作为新手还是先用ubuntu和centos顶着吧,其他的东西,技术够了才去摸。这几天光linux的发行版都换了几个了,要么死在安装上,要么死在网络上。
zhaoxiao90
帖子: 4
注册时间: 2011-05-15 0:55

Re: ubuntu11.10源代码编译安装mysql5.5.20(记录和给自己的备份)

#2

帖子 zhaoxiao90 » 2012-04-26 1:13

楼主辛苦了啊,我就明天再折腾了
北羽星
帖子: 10
注册时间: 2012-06-17 0:42

Re: ubuntu11.10源代码编译安装mysql5.5.20(记录和给自己的备份)

#3

帖子 北羽星 » 2012-06-18 21:32

谢谢楼主分享。
学习一下
Andyluou
帖子: 4
注册时间: 2013-12-14 16:44
系统: Ubuntu13.10

Re: ubuntu11.10源代码编译安装mysql5.5.20(记录和给自己的备份)

#4

帖子 Andyluou » 2014-01-25 11:24

不知到楼主知不知道 为什么在bin/mysqld_safe --user=mysql & 这个命令上会出现问题呢,我也是这个问题?
回复