通用二进制安装MySQL(MariaDB)

一、前言

    MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,并且之前是完全开源,所以大受欢迎。但由于后面MySQL卖给了SUN,随后SUN被Oracle收购,虽然也有开源免费版本,但是很多功能都需要另外购买商业版本,导致现在MySQL使用份额逐渐减少。所以MariaDB就是因为这种原因诞生出来,成为数据库管理系统是MySQL的一个分支。


二、MariaDB介绍

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL。基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎。虽然MariaDB被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的。

小贴士:www.mariadb.org 是官方站点


三、MariaDB安装介绍

    3.1、安装前需要注意地方

    对于通用的二进制格式的包,我们只需要解压缩后即能使用,但是由于二进制格式的程序包是已经编译好的二进制程序,所以里面有些脚本都是根据固定的路径执行某些脚本,所以他们要求mysql这个路径必须安装在/usr/local目录下(类似第三方程序路径下),并且其目录的目录名必须是叫mysql。因为如果不这样做的话,很多默认的脚本会无法运行。 

    3.2、Mariadb通用二进制包解压后文件说明

bin:            各种二进制都在此目录下
data:           如果我们不创建新目录的话,此目录就是默认的数据目录。所以权限必须是属主和属组都是mysql
docs:           相关 文档
include:        头文件
lib:            库文件
man:            帮助手册
mysql-test:     mysql测试组件
scripts:        mysql初始化时要用到的脚本
share:          mysql的共享内容
sql-bench:      对mysql做压力测试工具
support-files:  mysql正常运行的样例性的配置文件或文档

    3.2、Mariadb官方安装说明介绍

    小贴士:在通用二进制包中有一个叫“INSTALL-BINARY”的安装帮助信息,所以在安装前可以先查阅此文件信息。下面介绍里面提到的帮助信息解释。但是实际上安装步骤可能和安装帮助信息不完全相同,所以官方安装帮助仅作参考。

[root@www mysql]# less INSTALL-BINARY     #解压后,可使用此命令查看,找到下面字段。
shell> groupadd mysql             #添加一个组名
shell> useradd -g mysql mysql     #添加一个用户
shell> cd /usr/local              #进去/usr/local目录下
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -    #把通用二进制MariaDB进行解压到此目录
shell> ln -s full-path-to-mysql-VERSION-OS mysql      #链接目录到到目录名为mysql的目录名(就是上面提到的目录名必须叫mysql)
shell> cd mysql 
shell> chown -R mysql .          #把mysql路径下所有文件的属主改为mysql
shell> chgrp -R mysql .          #属组改为mysql
shell> scripts/mysql_install_db --user=mysql    #执行此脚本完成以mysql的身份完成mysql数据初始化
shell> chown -R root .           #然后在把它的的权限改为root
shell> chown -R mysql data       #但是把这个目录下的data属主改回mysql
shell> bin/mysqld_safe --user=mysql &    #而后使用此命令即可启动mysql

    3.3、其他需要注意的地方

考虑到使用此方法安装的时候,数据库文件默认将会存放到目录下的data文件,但是如果在企业里,企业数据将会增长很快,导致数据库文件很大,对于安全性和可扩展性都不好,所以企业里一般会存放到另一个磁盘上会更安全。为了以后使用规范,建议数据目录要事先规划好,指定在独特的位置,比如专门找个磁盘存放mysql数据。


四、安装mariadb-5.5.36

    4.1、下载mariadb包

    Mariadb官方站点下载mariadb-5.5.36-linux-x86_64.tar.gz包,并将其复制到Linux服务器。

    4.2、解压文件到/usr/local路径

    必须解压到此路径,原因前面已介绍过

[root@www local]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local/

    4.3、修改目录的目录名(此处为链接到目录名为mysql的目录下)

[root@www local]# ln -s mariadb-5.5.36-linux-x86_64 mysql

    这里使用创建链接的方式将名字命名为mysql,原因是如果以后将来需要升级maridb的话,又要重新将原来的版本移走,再把新的重命名为mysql,会比较麻烦

    4.4、创建mysql用户及组

[root@www local]# groupadd -r mysql
[root@www local]# useradd -g mysql -r mysql

    4.5、修改mysql各文件夹的权限

    查看mysql文件下的权限如下


1.jpg

    修改权限

[root@www mysql]# chown -R root.mysql ./*

    修改data目录的权限

[root@www mysql]# chown -R mysql.mysql ./data

    4.6、初始化mysql前准备

因为mysql初始化时需要一些配置文件,在support-file提供了很多样例的配置文件,其中有:my-huge.cnf,my-innodb-heavy-4G.cnf,my-large.cnf,my-medium.cnf,my-small.cnf。这些是分别用在你的主机,有不同的可用内存不同时使用的不同配置文件 。可进去查看详细情况

[root@www support-files]# cp my-large.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? n

选择好之后,拷贝到/etc/my.cnf文件,但是会发现,此文件已经存在,也许你会怀疑我们并未安装mysql,为什么会有此文件。其实此文件是系统安装了mysql-libs自动提供的配置文件。请先打开/etc/my.cnf文件查看,因为下面将会说明下的

[root@www support-files]# mkdir /etc/mysql
[root@www support-files]# cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf

如果我们是覆盖了,有些配置信息会不太一样,比如说socket,datadir。所以我们选择安装到其他位置。点击打开新的my.cnf,会发现很多配置信息会和之前的那个不相同,那么mysql到底会去读哪个配置信息呢?下面有介绍

    4.7、修改mysql数据文件的路径(此项设置根据要求)

在[mysqld]段里添加下面此项,表示mysql的数据保存到此路径,无论你是否修改了路径,最好都将路径填写上面,测试过有时会生成不到对应的mysql初始文件的。    

datadir = /usr/local/mysql/data

    4.8、初始化mysql

在scripts下有个mysql_install_db文件,此文件就是专门用于初始化mysql的

可使用./mysql_install_db –help 查看帮助信息

     –datadir=path  :指定数据文件存放路径

     –user=user_name:用哪个用户来执行初始化过程,此项不能省略

[root@www scripts]# ./mysql_install_db --user=mysql –datadir=/usr/local/mysql/data

但是此时会报一个错误:“FATAL ERROR: Could not find ./bin/my_print_defaults”,原因是需要去读bin目录下的文件,所以执行方式必须切换到父目录执行才行,实际如下执行

[root@www mysql]# ./scripts/mysql_install_db --user=mysql

    4.9、Mysql服务脚本

在support-files下有一个叫mysql.server就是准备好的服务脚本。只要安装目录没修改过,就能正常使用

[root@www data]# cp ../support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@www data]# chkconfig mysqld on

    4.10、启动mysqld服务

[root@www data]# service mysqld start

    4.11、安装完后有些需要注意的地方

在前面我们会发现mysql-libs生成了一个/etc/my.cnf配置文件,而我们自己创建了一个新的/etc/mysql/my.cnf配置文件,那么我们看看以上两个配置文件的

[root@www ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
[root@www ~]# vim /etc/mysql/my.cnf
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
thread_concurrency = 8
datadir=/usr/local/mysql/data

我们可以看到socket文件指向不同的文件路径,所以通过查看/tmp下的文件会生成一个mysql.sock文件,而/var/lib/mysql上并没有此文件,说明此时读取的配置文件/etc/mysql/my.cnf生效了。

这个是mysql有点特殊的地方,mysql读配置文件它不是只读一个的,他会依次去找很多个位置,而且找到之后把最后一个找到的作为其最终使用的配置,或者是他把所有的找到了,然后将里面的参数合并起来,而且如果所有配置文件中有相同的参数,那么最后一次找到的是最终生效的。

    4.12、程序文件无法找到解决办法

因为不是使用rpm包安装的,所以有可能程序文件无法找到,那么就需要编辑配置文件环境变量PATH,让其程序在环境变量PATH可以找到

[root@www tmp]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH

重读配置文件

[root@www tmp]# source /etc/profile.d/mysql.sh

此时你就能执行mysql程序了,否则之前执行mysql是会提示程序无法找到等错误信息。

    4.13、导出头文件

如果我们需要他开发的话,或依赖其他程序编译的话,就需要导出

[root@www tmp]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
`/usr/include/mysql' -> `/usr/local/mysql/include/'

    4.14、导出头文件

[root@www tmp]# ldconfig -v | grep mysql
/usr/lib64/mysql:
       libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
       libmysqlclient.so.16 -> libmysqlclient.so.16.0.0

但是此库文件是mysql-libs的rpm包提供的。

所以做以下操作

[root@www tmp]# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib

重新加载即可查看

[root@www tmp]# ldconfig -v | grep mysql
/usr/local/mysql/lib:
libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0
libmysqld.so.18 -> libmysqld.so.18
/usr/lib64/mysql:
libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
libmysqlclient.so.16 -> libmysqlclient.so.16.0.0

    4.15、使用mysql连接MySQL服务器

[root@www mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.36-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

    这里会介绍到MySQL服务器的版本信息,而且是使用了MariaDB 5.5.36的版本 。


五、总结

    5.1、解压后的文件必须放在/usr/local目录下

    5.2、文件目录的目录名必须是mysql,否则会影响通用二进制程序包里的脚本执行错误。

    

原创文章,作者:螃蟹,如若转载,请注明出处:http://www.178linux.com/8787

(0)
螃蟹螃蟹
上一篇 2015-10-15
下一篇 2015-10-16

相关推荐

  • 一起学WINS系列(三)界面、概览

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159542 上节我们讨论了有关WINS服务器的安装,本节将开始讨论WINS配置等内容。 一般情况下,我们可以在控制面板的管理工具中找到WINS,或者在【运行】内…

    Linux干货 2015-03-25
  • linux终端类型

    人机交互界面:GUI、CLI GUI: gnome:c,gtk kde:c++,qt CLI: bash,zsh,sh,csh,ksh 不同CLI间跳转:alt+f1\f2\f3\f4   终端类型: 物理终端、控制台终端:/dev/console,控制台console 计算机显示器通常被称为控制台终端(Console) 虚拟终端:/dev/tty…

    Linux干货 2016-10-14
  • 8月3日作业

    文件权限相关的课堂练习: 1)当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?     用户小明不能进入/testdir,不能删除,不能创建。使用ll能看到有哪些文件,但是看不到具体信息 2)当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作? 不能查看文…

    Linux干货 2016-08-07
  • N25期第一周作业

    计算机组成及其功能 计算机由硬件和软件组成,硬件是基础,是软件活动的舞台,软件是灵魂,使硬件发挥最大的作用,两者缺一不可。计算机硬件是由物理元器件构成的有形实体,主要是数字逻辑电路。计算机软件是由计算机程序构成的无形的东西,需要存储在有形的硬件(如主存储器、硬盘等)中,可以实现更高层次的逻辑功能。目前大多数计算机是根据冯.诺依曼体系结构的思想来设计的,即具有…

    Linux干货 2016-11-30
  • 设计模式(八)装饰器模式Decorator(结构型)

    1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       通过继…

    Linux干货 2015-07-03
  • 逻辑卷管理器LVM使用简介

    逻辑卷管理器(LVM) 原理图如下: 先准备一个分区/dev/sdb1,注意也存在ID问题,选择8e。 1.先把磁盘变成物理卷 在做这步前可以先看下系统中存在的物理卷,没有就什么都不会显示。 把我们准备好的两个磁盘变成物理卷,注意我那使用旧的格式化的分区磁盘,可能会出现上面有文件系统或者卷标类型的问题,所以尽量使用新磁盘做实验。如果出现这种情况,可以使用dd…

    2017-05-02

评论列表(3条)

  • Vicky
    Vicky 2015-10-15 16:44

    思路清晰~

  • Admin
    Admin 2015-11-09 10:56

    我在使用二进制安装mariadb初始化的时候报这个错,请指教!
    [root@localhost mysql]# scripts/mysql_install_db –user=mysql
    Installing MariaDB/MySQL system tables in ‘/data/mysql/’ …
    ./bin/mysqld: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory

    Installation of system tables failed! Examine the logs in
    /data/mysql/ for more information.

    The problem could be conflicting information in an external
    my.cnf files. You can ignore these by doing:

    shell> ./bin/scripts/mysql_install_db –defaults-file=~/.my.cnf

  • Admin
    Admin 2015-11-09 11:18

    数据库版本:mariadb-10.1.8-linux-x86_64,操作系统:CentOS 6.7 64位。求指教?
    二进制安装mariadb初始化的时候报这个错:system tables in ‘/data/mysql’ … ./bin/mysqld: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory Installation of system tables failed!
    MariaDB启动时候:
    [root@localhost mysql]# service mysqld start
    Starting MySQL. ERROR!
    [root@localhost mysql]# cat /data/mysql/localhost.localdomain.err
    151109 19:03:03 mysqld_safe Starting mysqld daemon with databases from /data/mysql
    /usr/local/mysql/bin/mysqld: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory
    151109 19:03:03 mysqld_safe mysqld from pid file /data/mysql/localhost.localdomain.pid ended