Mysql-5.5源码安装入门过程及源码安装的相关知识笔记

    很多试用的程序只有源代码(比如 tar.gz )可用,没人提供 RPM 或者Debian 包。你只好下载源代码,解压,然后手动编译。

    在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包,不同的最终用户经过编译就可以正确运行,这也是非常符合c语言的设计哲学的,一次编写,到处编译么,而常见的二进制包,比如rpm和deb,软件开发者必须为每种特定的平台定制好专门的软件包,这个通过rpm文件的后缀名就可以初见端倪,比如ppc,sparc,i386之类,在这里不做过多的陈述

    最常见源码包的就两种(XXXX.tar.gz or XXXX.tar.bz2),其实这些源码包都是由2个工具压缩而成的,tar.gz结尾的文件用到的工具是tar和gunzip,而tar.bz2结尾的文件所使用的工具是tar和bzip2,之所以这样做是因为,tar仅仅能够打包多个文件但是没有压缩的功能,而gz和bz2却刚好相反,仅能够压缩单个文件,这样我们常见的源码包实际上是通过tar先将不同的源文件打包,然后再通过gunzip或者bzip2压缩后发布的


在安装过程中所用的命令功能:


1、Wget是一款免费开放源代码下载工具,可以运行在Unix和Linux操作系统下。

-r -A.jpg(只下载JPG图片)   

-i(下载txt下的文件) 

-b(后台下载)      (断点续传)      -P  指定下载到本机的哪个目录

-nd 表示不在本机重新创建目录结构。        -t 1     重复次数为1次

2、./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。
这一步一般用来生成 Makefile,为下一步的编译做准备(即让make install从中读取指令),你可以通过在 configure 后加上参数来对安装进行控制,比如:

./configure --prefix=/usr的意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin)。

3、make是用来编译的,它从Makefile中读取指令,然后编译。(make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装)。

4、make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

make insatllmake check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)




        以下是我在wdos系统上 mysql5.5的源码安装过程记录~~~





一、安装cmake工具

注:Mysql从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具,

 注:使用configure,编译完成之后将生成config.log和config.status 文件。

cmake,编译完成之后将生成cmakefError.log和cmakeoutput.log文件。

创建目录/opt/mysql_cmake,然后进入目录,用wget命令下载cmake源码包。如下:

在哪个目录可以看mysql的源码_c/c++


查看压缩包,已在该目录下了

在哪个目录可以看mysql的源码_mysql_02


用tar命令接压缩cmake包,tar

bz2格式用j,gz格式用z,c是创建,x是解压缩,v是详细信息,f是指定文件

#tar  -zvxf  cmake-2.8.3.tar.gz


指定安装的位置cmake-2.8.3,解压缩完之后就默认自动生成该目录文件。

#cd cmake-2.8.3


./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,

并不是需要CC或GCC,它是个shell脚本。(预编译),生成 Makefile。

# ./configure  //诸 / 前有 

.

make是用来编译的,它从Makefile中读取指令,然后编译。

# make



make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置cmake-2.8.3。

# make install



二、安装Mysql-5.0

先创建目录mkdir /opt/mysql_mysql,然后cd /opt/mysql_mysql,再用wget命令下载mysql源码包。如下:

在哪个目录可以看mysql的源码_php_03


在哪个目录可以看mysql的源码_mysql_04


用tar命令解压缩mysql源码包

#tar -zvxf mysql-5.5.25a.tar.gz



Ll命令查看,解压缩成功之后便自动生成mysql-5.0目录文件

在哪个目录可以看mysql的源码_在哪个目录可以看mysql的源码_05


进入该目录,开始检测、编译、安装源码包,如下

#cd mysql-5.5.25a


Cmake编译,,相关参数的设置可以参照网上的一些资料。

在哪个目录可以看mysql的源码_在哪个目录可以看mysql的源码_06

注:Cmake编译时可能遇到的如下问题

在哪个目录可以看mysql的源码_php_07

看提示的解决方法:(remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.)

就是要安装courses包,

命令:Yum install ncurses-devel   //安装

yum安装之后 还是报错,那是因为会产生CMakeCache.txt文件,每次cmake之前

需要删除它.

命令:Rm -rf  CMakeCache.txt删除文件


然后继续运行cmake 

在哪个目录可以看mysql的源码_c/c++_08


显示成功了。

在哪个目录可以看mysql的源码_c/c++_09



分别运行make和make install 编译安装

# make

# make install



三、设置mysql数据库

添加mysql用户和用户组,用来运行mysql数据库

在哪个目录可以看mysql的源码_mysql_10

在哪个目录可以看mysql的源码_在哪个目录可以看mysql的源码_11


设置目录/var/local/mysql的权限为可写,并将目录的拥有者设置为mysql组的使用者mysql用户 

在哪个目录可以看mysql的源码_php_12


创建目录/var/mysql,并设置其拥有者,备份服务文件,为后面的数据库初始化操作做准备

# make -p /var/mysql

在哪个目录可以看mysql的源码_php_13


初始化数据库。利用mysql_install_db 生成数据库授权表

在哪个目录可以看mysql的源码_c/c++_14


进入服务文件,添加指定路径。

Basedir:参数指定了安装 MySQL 的安装路径

Datadir:参数指定了 MySQL 的数据库文件放在什么路径下

# vi /etc/init.d/mysql

在哪个目录可以看mysql的源码_mysql_15



设置开机启动

(用chkconfig增加一项新的服务并指定读系统服务mysql要在哪个执行等级中开启或关闭)

在哪个目录可以看mysql的源码_c/c++_16


重启服务成功:

# /etc/init.d/mysqld start



连接mysql

注:可能出现的问题问题

在哪个目录可以看mysql的源码_php_17


原因:由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,但linux系统总是去/tmp/mysql.sock查找,所以会报错。


解决方法: 创建/var/lib/mysql/mysql.sock的软连接:当系统找到/tmp/mysql.sock时,会自动连接到/var/lib/mysql/mysql.sock

在哪个目录可以看mysql的源码_php_18


具体用法是:ln -s 源文件 目标文件。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。


再次连接mysql,成功,初始密码为空,即直接敲-回车

在哪个目录可以看mysql的源码_数据库_19


修改root用户密码

注:可能出现的问题及解决方法

问题:mysql> update mysql.user set password=password(”123456”)where User=”root”;
mysql> flush privileges; 
mysql> quit ;
用以上语句修改后不生效,即再次登陆时密码还是为空


解决:采用以下修改方法,具体原因我也不知道。

在哪个目录可以看mysql的源码_数据库_20



四、对mysql的基本使用

创建数据库

在哪个目录可以看mysql的源码_在哪个目录可以看mysql的源码_21


创建表

在哪个目录可以看mysql的源码_mysql_22


向空表插入数据

在哪个目录可以看mysql的源码_php_23


查询语句使用select

在哪个目录可以看mysql的源码_php_24




mysql基本操作我就不一一列出了,可以根据自己需要操作。