linux源码包管理,MySQL二进制程序安装,源码包安装,yum安装mysql

什么是开放源码,编译程序和可执行文件

    开放源码:就是程序代码,写给人类看的程序语言,但机器不认识,所以无法执行;

    编译程序:将程序代码转译成为机器看得懂的语言;

    可执行文件:经过编译程序变成二进制程序后,机器看得懂所以可以执行的档案;

什么是函数库

    函数库:是一种可执行代码的二进制格式,类似子程序的角色,可以被调用来执行一段功能函数;又分为动态与静态函数库,因为其没有程序执行入口,所以不能独立运行;

   常用存放函数库的目录: /lib,/usr/lib,/usr/local/lib;

   内核提供的函数库:/lib/modules;

   库的配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf;

   系统核心库:glibc;

   静态库

       1,文件名一般是libxxx.a;

       2,整个函数库的所有数据都会被整合进目标代码中;

       3,执行程序不再需要外部的函数库支持;

       4,如果静态函数库改变,整个程序必须重新编译;

       5,利用函数库编译成的文件较大;

   动态库

       1,文件名一般是libxxx.so;

       2,编译时不被编译进目标代码,程序执行到相关函数时才调用函数库中相应函数;

       3,动态函数库产生的可执行文件较小;

       4,动态函数库的改变不会影响程序,所以函数库升级方便;

       5,由于函数库没有被整合进程序,所以程序的运行环境必须提供相应的库(不要随意删除和移动);

什么是make与configure

   make:make是一个程序,根据makefile的定义,调用源代码和函数库以及编译器来进行编译;

   configure:检测系统环境,该环境是否有软件所需要的其他功能,以及定义如何编译,然后生成makefile文件;

       configure检测的内容:

           1,是否有合适的编译程序可以编译本软件的代码;

           2,是否已经存在本软件所需要的函数库,或者其他依赖的软件;

           3,操作系统平台是否适合本软件,包括linux的核心版本;

           4,核心的表头定义文件(header include)是否存在;

Tarball软件:就是将软件的所有源代码先以tar打包,然后在压缩的文件,解压后通常有以下内容

   1,源代码文件;

   2,检测程序文件(可能是configure或config等文件名);

   3,软件的简易说明与安装说明(INSTALL或README);

什么是安装软件

   1,将文件解压至指定的目录;

   2,生成相应的数据文件;

为什么要升级软件

   1,需要新的功能,但旧版软件没有;

   2,旧版软件可能有bug或漏洞,需要进行升级;

   3,旧版软件的执行效率低,或不能达到需求;

升级的方法分为两大类

   1,直接以源码通过编译来安装与升级;

   2,直接以编译好的binary program来安装与升级;

源码包的安装流程

    1,将源码包从厂商网页下载下来;

    2,解压源码包;

    3,开始用gcc进行源码的编译(会产生目标文件object files);

    4,然后以gcc进行函数库,主和子程序的链接,以形成主要的二进制文件;

    5,将上面的二进制文件以及相关的配置文件安装到主机中;

   源代码 ==> 编译(二进制) ==> 链接 ==> 运行;

           编译:将源代码转换成计算机可识别的二进制格式;

           常见linux中的编译器:GCC,G++;

           链接:将程序与库的调用入口关联起来;

           动态链接:调用共享库;

           静态链接:将所有依赖的库封装到程序中;

源码安装的优点

   1,有些特性是编译选定的,如果编译未选定此特性,将无法使用;

   2,rpm的版本会落后于源码包,甚至落后很多,源码包升级比rpm更方便,不需要等待rpm制作者升级;

软件的组成部分

   二进制程序:通常的安装目录在/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin;

   程序包含CPU指令和数据;

       库文件:可让其他程序调用,通常的目录/lib,/usr/lib,/usr/local/lib;

       配置文件:通常目录/etc,配置文件一般为纯文本文件或XML文件;

       帮助文件:有man,README,INSTALL等;README和INSTALL通常放在/usr/share/doc中;

源码包安装的步骤

   1,取得源码文件:将tarball文件在/usr/local/src目录下解压缩(系统推荐,非必须);

   2,取得步骤流程:进入解压后的目录中,查阅INSTALL和README等文件(重要);

   3,解决依赖关系,安装所需要的软件:根据INSTALL和README的内容检查并安装相应软件;

   4,建立makefile:使用configure或config检测安装环境,并创建Makefile文件;

   5,编译:使用该目录下的Makefile作为make程序的参数配置文件,来进行编译或其他动作;

   6,安装:使用make,并以Makefile参数配置文件,依据install这个target指定来安装到正确的路径;

源码包安装的指令下达方式

    1,./configure:该步骤让用户选定编译特性检查系统环境和相关软件属性,然后生成Makefile;

    2,make clean:make会读取Makefile中关于clean的操作,可删除目标档案,在无法确定源代码中有没有包含上次编译过的目标文件(*.o)使用,以保证是自己的机器所编译的执行档;(可根据实际情况省略)

    3,make:make依据Makefile中的设定的操作进行编译,将源代码编译成可以被执行的可执行文件;

    4,make install:make根据Makefile中关于install的项目,将所编译完成的数据安装到执行目录中;

为了方便管理,通常建议

    1,将源码包数据解压到/usr/local/src中;

    2,安装时,最好安装到/usr/local这个默认路径下;

    3,考虑未来反安装步骤,最好将每个软件单独安装在/usr/local下;

    4,为安装到单独目录的软件的man page加入man path查找路径中;

开始安装源码包

   1,准备开发环境:为程序提供编译环境;

   2,解压下载好的tar包,并查阅INSTALL和README文件:tar -zxvf xxx.tar.gz;

   3,查看configure所支持的参数,并建立Makefile文件:./configure --help;

         --help获取脚本的使用帮助;

       --prefix=/path/to/somewhere     指定软件安装的位置;

       --sysconfdir=/path/to/config_file     指定配置文件的路径;

   4,make clean(可选)

   5,make 编译;

   6,make check    测试编译后的文件是否正确(可选操作,不是所有的Makefile都定义了此功能)

   6,make install    安装;

进一步的操作

   1,修改PATH环境变量,让系统可以识别此程序的二进制文件路径;

       a:在/etc/profile中指定PATH变量;

       b:在/etc/profile.d/目录下建立一个以.sh的文件,然后定义PATH变量;

   2,默认情况下,系统搜索库文件的路径(/lib, /usr/lib); 要增添额外搜寻路径;

       在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;

         ldconfig:重启后才生效,如果要立即生效,使用此命令;

           -v:显示重新搜寻库的过程;

   3,头文件:输出给系统,头文件中包含了自己所提供的函数属性,用于被其他二次开发所使用的文件;

           默认目录:/usr/include;

           增添头文件搜寻路径,使用链接进行

               a:ln -s /usr/local/name/include/* /usr/include;

               b:ln -s /usr/local/name/include /usr/include/name;

   4,man文件路径:默认安装在--prefix指定的目录下的man目录中,而系统是在/usr/share/man中查找的;

               a:vim /etc/man.config;

                       添加:MANPATH /path/to/file:指定查找man文件的路径;

                  b:man -M /PATH/TO/MAN_DIR COMMAND;

如何将函数库加入到内存中:如果将常用的动态函数库预先加载到内存中,可以增加动态函数库的读取速度;

   1,在/etc/ld.do.conf中新增一行写入想要读入缓存中的动态函数库所在的目录,例如:/usr/lib/mysql;

   2,使用ldconfig将/etc/ld.do.conf的资料读入内存中;

   3,同时也将数据记录一份在/etc/ld.so.cache文件中;

   ldconfig还可以用于判断动态函数库的链接信息

       ldconfig [-f conf] [-C cache]

       ldconfig [-p]

          -f conf:conf指某个文件名,即使用conf作为libarary函数库的取得路径,而不是以/etc/ld.so.conf为默认值

         -C cache:cache指某个文件名,即使用cache作为快取暂存的函数库资料,而不是以/etc/ld.so.cache为默认值

         -p:列出目前所有函数库资料内容(在/etc/ld.so.cache内的资料)

程序的动态函数库解析:ldd

    用于判断某个可执行的二进制文件含有什么动态函数库;

    ldd [-vdr] [filename]:查看命令与库的依赖关系;

         -v:列出所有内容;

         -d:重新将资料有意识到link点显示出来;

         -r:将ELF有关的错误内容显示出来;

         通常查询出来的第一个结果是程序的访问入口,不是依赖的库文件;

检查下载后软件包的正确性

   md5sum/sha1sum [-bvt] filename          

   md5sum/sha1sum [--status|--warn] --check filename

       -b:使用binary的读档方式,默认为windows/DOS档案型态的读取方式

       -c:检验文件指纹

       -t:以文件方式来读取指纹

   可以用这两条命令为系统关键文件的指纹记录下来,用于保证系统的安全,比如/etc/passwd和/etc/shadow;



 

MySQL简介以及二进制程序方式安装

MySQL:MySQL是一个关系型数据库系统,由MySQL AB公司开发,先手被Sun和Oracle收购,是目前最为流行的RDBMS之一;

     官方站点:http://www.mysql.com/

     MySQL的官方下载地址:http://dev.mysql.com/downloads/mysql/

     MySQL搜狐镜像的下载地址:http://mirrors.sohu.com/mysql/;  

     MySQL community相关软件的说明

         MySQL Community Server        mysql客户端和服务器整合起来的核心包;

         MySQL Cluster        提供Mysql集群功能的程序包,但其极少使用;

         MySQL Workbench        辅助设计mysql数据库的程序,如几张表,哪些字段等;

         MySQL Utilities        MySQL工具组件,主要用于管理和维护MySQL;

         MySQL Proxy        MySQL中间件,代理接收发往MySQL数据库的请求,将需要求路由至不同的后端主机上去;

         MySQL Connectors        MySQL的连接器,程序连接MySQL的驱动;

         MySQL Benchmark Tool        对MySQL进行压力测试的工具;

     MySQL rpm包的功能

          mysql.i386          mysql的客户端;

          mysql-server.i386          mysql的服务器端;

          mysql-connector-odbc.i386          mysql的链接器;

          mysql-test          mysql的测试组件;

          mysql-bench          mysql的性能测试组件;

          php5-mysql          php访问mysql的驱动;

MySQL的安装方式(Linux系统)

     1,源码编译安装;

    从MySQL5.5开始就要用cmake安装了,已不能用./configure编译安装,我们查看一下mysql5.6.12的安装目录,从下面的安装目录我们可以看到,里面根本没有configure文件,cmake重要特性是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译。

     2,通用二进制格式的程序;

通用二进制包安装说明软件包已经编译好,不需要我们重新编译,我们只要解压一下,进行简单配置便可以运行使用!

     3,rpm包安装;

MySQL的配置文件:my.cnf,该文件是集中式的多段配置文件,通常放在/etc/目录下,

     [mysqld]          该段是对MySQL服务器的配置;

     [mysql]            为客户端程序提供配置;

     [client]             客户端和服务器工具的通用配置,包括mysqldump,mysqladmin等等;

     注意:

  1,MySQL的配置文件可以存放在多个位置,将所有找到的配置文件参数合并后生效,如果有重复的参数,后找到的参数生效;

  2,配置文件的读取顺序:/etc/my.cnf,/etc/mysql/my.cnf,$MYSQL_BASE/my.cnf,~/.my.cnf;

MySQL的程序

     服务器程序:mysqld;

     客户端程序:mysql;

MySQL的数据目录(datadir)

     二进制安装:/usr/local/mysql/data;

     rpm包安装:/var/lib/mysql;

     建议将数据目录存放在lv上,以便于容量的扩展;

MySQL监听端口:3306/tcp;

使用通用二进制格式的MySQL

二进制程序下载地址:http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.19-linux-glibc2.5-i686.tar.gz;

为mysql准备数据目录:/mysql/data;

1,创建mysql使用的系统用户和组   ;  

     groupadd -r -g 306 mysql

     useradd -g 306 -u 306 -r mysql

2,将程序包解压,并为其创建链接;

     tar xf /mysql-5.6.19-linux-glibc2.5-i686.tar.gz -C /usr/local/

     ln -s mysql-5.6.19-linux-glibc2.5-i686 mysql

3,修改mysql程序目录和数据目录的权限;

     chown -R root.mysql /usr/local/mysql/*

     chown -R mysql.mysql /mysql/data

4,初始化mysql;

     cd /usr/local/mysql

     scripts/mysql_install_db --user=mysql --datadir=/mysql/data

5,为mysql提供服务脚本;

     cp support-files/mysql.server /etc/init.d/mysqld

     chkconfig --add mysqld

6,为mysql提供配置文件;

     cp support-files/my-default.cnf /etc/my.cnf          如果有旧的配置文件,请先备份;

7,修改配置文件:vim /etc/my.cnf

     basedir = /usr/local/mysql          mysql工作目录

     datadir = /mysql/data          mysql数据目录

     保存退出;

8,修改系统PATH变量;

     vim /etc/profile.d/path.sh

     写入:export PATH=$PATH:/usr/local/mysql/bin

     保存退出;

     source /etc/profile

9,将man文件档添加至man pages;

     vim /etc/man.config

     MANPATH /usr/local/mysql/man

     保存退出;

10,将mysql的lib目录添加至系统;

     vim /etc/ld.so.conf.d/mysql.conf

     写入:/usr/local/mysql/lib

     保存退出;

     ldconfig

11,输出mysql的头文件;

     ln -s /usr/local/mysql/include /usr/include/mysql

12,启动mysql;

     service mysqld start

13,查看mysql是否正常监听端口;

     netstat -tlunp | grep 3306

 

MYSQL源码包安装

安装所需组件

   yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake

1.安装cmake(最新的cmake-2.8.11.2)

[root@mysql src] # tar xf cmake-2.8.11.2.tar.gz
[root@mysql src] # cd cmake-2.8.11.2
[root@mysql cmake-2.8.11.2] # ./bootstrap
[root@mysql cmake-2.8.11.2] # make && make install

2.安装编译MySQL-5.6.12

说明:cmake指定编译选项的方式不同于make,其实现方式对比如下

./configure 对应的是 cmake .

./configure --help 对应的是 cmake . -LH 或者是 ccmake .

3.创建mysql的用户与组

[root@mysql ~] # groupadd -r mysql
[root@mysql ~] # useradd -g mysql -r  -s /sbin/nologin mysql

4.创建mysql的数据目录(创建逻辑卷存放数据)

[root@mysql ~]# fdisk /dev/sda #创建一个新分区类型为8e

[root@mysql ~]# partx -a /dev/sda #让内核重新读取一下分区

[root@mysql ~] # yum install -y lvm2 #安装lvm
[root@mysql ~] # pvcreate /dev/sda7 #创建物理卷
[root@mysql ~] # vgcreate myvg /dev/sda7 #创建卷组
[root@mysql ~] # lvcreate -L 1G -n mydata myvg #创建逻辑卷
[root@mysql ~] # lvs #查看逻辑卷
[root@mysql ~]# mkfs.ext4 /dev/myvg/mydata #格式化
5.挂载设置
[root@mysql ~] # mkdir /mydata #创建挂载目录
[root@mysql ~] # vim /etc/fstab  #修改挂载配置文件
#新增一行
/dev/myvg/mydata        /mydata         ext3    defaults        0 0
[root@mysql ~] # mount -a #挂载
[root@mysql ~] # mount #查看所有挂载
6.数据目录配置
[root@mysql ~] # cd /mydata/
[root@mysql mydata] # mkdir data
[root@mysql mydata] # chown -R mysql.mysql data
7.编译安装
[root@mysql mysql-5.6.12]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

发现报错,以很清楚的看到缺少两个依赖包,我们用yum安装一下即可! 

yum install �Cy openssl openssl-devel ncurses ncurses-devel

们再次编译一下,可能还会报同样的错误这里是因为,我们在多次运行cmake有个文件我们需要删除,删除当前目录下CMakeCache.txt文件并重新编译,再次运行cmake命令就会正常!

最后进行下面操作

[root@mysql mysql-5.6.12] # make && make install

8.编译选项说明

指定安装文件的安装路径时常用的选项

-DCMAKE_INSTALL_PREFIX= /usr/local/mysql     ----指定残可安装路径(默认的就是 /usr/local/mysql
-DMYSQL_DATADIR= /data/mysql          ----mysql的数据文件路径
-DSYSCONFDIR= /etc                ----配置文件路径

编译过程中启用其他存储引擎时指令介绍

-DWITH_INNOBASE_STORAGE_ENGINE=1         ----使用INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1            ----常应用于日志记录和聚合分析,不支持索引
-DWITH_BLACKHOLE_STORAGE_ENGINE=1      ----黑洞存储引擎

编译过程中取消一些存储引擎指令介绍

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
示例如下:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

编译进过程中功能启用的指令介绍

-DWITH_READLINE=1       ----支持批量导入mysql数据
-DWITH_SSL=system       ----mysql支持ssl会话,实现基于ssl的数据复
-DWITH_ZLIB=system      ----压缩库
-DWITH_LIBWRAP=0        ----是否可以基于WRAP实现访问控制

其他功能指令

-DMYSQL_TCP_PORT=3306                   ----默认端口
-DMYSQL_UNIX_ADDR= /tmp/mysql .sock       ----默认套接字文件路径
-DENABLED_LOCAL_INFILE=1                ----是否启用LOCAL_INFILE功能
-DEXTRA_CHARSETS=all  ----是否支持额外的字符集
-DDEFAULT_CHARSET=utf8                  ----默认编码机制
-DDEFAULT_COLLATION=utf8_general_ci     ----设定默认语言的排序规则
-DWITH_DEBUG=0                          ----DEBUG功能设置
-DENABLE_PROFILING=1                    ----性能分析功能是否启用

9.mysql服务脚本

[root@mysql mysql-5.6.12] # cp support-files/mysql.server /etc/init.d/mysqld #复制脚本
[root@mysql mysql-5.6.12] # chmod +x /etc/init.d/mysqld #增加可执行权限
[root@mysql ~] # chkconfig --add mysqld #增加至sysV服务
[root@mysql ~] # chkconfig mysqld on  #开机自启动

10.初始化mysql

[root@mysql data]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data --user=mysql #mysql初始化

说明初始化时得,增加 --basedir选项

[root@mysql data] # ls #查看生成的文件
ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test
[root@mysql data] # cd /usr/local/mysql/
[root@mysql mysql] # ls
bin      data  include         lib  my.cnf      README   share      support-files
COPYING  docs  INSTALL-BINARY  man  mysql- test  scripts  sql-bench

11.修改mysql配置文件

[root@mysql mysql]# vim my.cnf   
#增加如下内容
binlog-format=ROW
log-bin=master-bin.log
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=1
report-port=3306
port=3306
datadir=/mydata/data
socket=/tmp/mysql.sock
report-host=master.magedu.com

12.启动mysql

[root@mysql mysql]# service mysqld start

[root@mysql mysql]# chkconfig mysqld on

13.mysql命令添加到环境变量中

root@mysql mysql] # vim /etc/profile.d/mysql.sh
exportPATH=$PATH: /usr/local/mysql/bin
[root@mysql mysql] # source /etc/profile #重新读取环境变量

14.输出mysql的man手册到man命令的查找路径

[root@mysql mysql] # vim /etc/man.config
#新增一行
MANPATH /usr/local/mysql/man

15.输出mysql的库文件

[root@mysql mysql] # vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib/
[root@mysql mysql] # ldconfig -v
/usr/local/mysql/lib :
         libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0

16.输出mysql的头文件到系统头文件

[root@mysql mysql] # ln -sv /usr/local/mysql/include/ /usr/include/mysql
"/usr/include/mysql" -> "/usr/local/mysql/include/"
[root@mysql mysql] # cd /usr/include/mysql/
[root@mysql mysql] # ls
big_endian.h                 m_string.h      my_global.h         mysql_embed.h     

好了到这里mysql的源码安装的配置过程全部完成.

17.测试

1).查看端口和登录mysql

[root@mysql mysql] # netstat -ntulp | grep :3306
tcp        0      0 :::3306                     :::*                        LISTEN      41347 /mysqld
[root@mysql mysql]# mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |

 

yum安装mysql5.6

1、删除系统自带的mysql

   rpm -qa|grep mysql

   yum remove mysql-libs

2、安装mysql YUM源

   wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

   rpm -ivh mysql-community-release-el6-5.noarch.rpm

3、安装mysql 

   yum install mysql-server mysql-devel

4、root密码设置

   service mysqld stop

   mysqld_safe --skip-grant-tables &

      mysql -u root -p                                                                                             回车直接进去,或者随便输入一个密码

      use mysql;

      update user set password=PASSWORD("newpass")where user="root";     更改密码为 newpassord

   flush privileges;                                                                                             更新权限

      quit

 

可以参考:http://zhaochj.blog.51cto.com/368705/1605323 

你可能感兴趣的:(源码,mysql,管理)