Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26644
  • 博文数量: 8
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-12 16:58
文章分类
文章存档

2012年(8)

我的朋友
最近访客

分类: LINUX

2012-08-10 15:39:01

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

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

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

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

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

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

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

-i(下载txt下的文件

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

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

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

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

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

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

make insatll ,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)


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

 

一、安装cmake工具

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

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

 使用cmake,编译完成之后将生成cmakefError.logcmakeoutput.log文件。

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

    

 

    

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

    

  

    

tar命令接压缩cmake包,tar

bz2格式用jgz格式用zc是创建x是解压缩v是详细信息f是指定文件

#tar  -zvxf  cmake-2.8.3.tar.gz

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

#cd cmake-2.8.3

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

并不是需要CCGCC,它是个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源码包。如下:

 

tar命令解压缩mysql源码包

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

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

 

 

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

#cd mysql-5.5.25a

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

 

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

 

看提示的解决方法

 

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安装之后 还是报错,那是因为 cmake会产生CMakeCache.txt文件,每次cmake之前

需要删除它.

 

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

 

然后继续运行cmake 

 

显示成功了。

 

 

分别运行makemake install 编译安装

# make

# make install

 

三、设置mysql数据库

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

 

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

   

 

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

# make -p /var/mysql

 

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

 

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

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

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

# vi /etc/init.d/mysql

 

设置开机启动

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

 

 

重启服务成功:

# /etc/init.d/mysqld start

 

连接mysql

:可能出现的问题问题

原因由于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

 

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

 

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

 

 

修改root用户密码

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

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

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

 

四、对mysql的基本使用

创建数据库

 

创建表

 

向空表插入数据

 

查询语句使用select

 

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

          

  有问题可到进行讨论学习

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

阅读(1423) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~