Centos7上编译安装Mariadb并且实现多实例

准备工作的第7和第8条请阅读,建议编译前安装这两个包
准备工作:

1 iptables关闭;selinux关闭

            systemctl stop firewalld  #关闭防火墙
            setenforce 0                   #关闭selinux

2 创建管理数据库的mysql用户

            useradd -r mysql -s /sbin/nologin

3 安装开发包组"development tools"

            yum groupinstall "development tools"

4 如果没有安装cmake就要安装cmake

            yum -y install cmake

5 在官方网站下载mariadb-10.2.12.tar.gz的包,此处用此版本进行编译

        http://downloads.mariadb.org

6 rz上传包

rz

7 注意:我编译安装的过程中遇到了一个问题,

        提示为"remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel."
        意思就是缺少ncurses-devel这个包安装后再执行以下编译,但是还要重新解压才可以,所以此处可以在编译安装前提前安装此包

8 安装完上一个还是会报错,此处遇到的是

        "CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):Could NOT find GnuTLS "
      安装gnutls-devel包解决

9 上述两个问题解决后还需安装libevent-devel包,不然还是编译失败,很坑爹= =
10 还需安装"libaio-deve"此包以及"openssl-devel"还有"libxml2-devel"包

1 解压上传的mariadb-10.2.12.tar.gz包到当前目录下

    tar xvf mariadb-10.2.12.tar.gz

2 由于编译安装中指定的数据库目录不存在,所以此处需要手动创建,并修改属主与属组

    mkdir /mysqldb
    chown mysql.mysql /mysqldb

3 进入到解压后的mariadb-10.2.12目录下开始进行编译

    cd mariadb-10.2.12
##########当中prefix指的是程序的安装目录
          datadir是存放数据库的目录
          sysconfdir下存放的是配置文件
          user是指定用户
          ssl开启ssl加密
          zlib开启压缩模式
          charset语言设定为UTF-8
    cmake . \
    -DCMAKE_INSTALL_PREFIX=/app/mysql \
    -DMYSQL_DATADIR=/mysqldb/ \
    -DSYSCONFDIR=/etc \
    -DMYSQL_USER=mysql \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DWITH_SSL=system \
    -DWITH_ZLIB=system \
    -DWITH_LIBWRAP=0 \
    -DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_DEBUG=0 \
    -DWITHOUT_MROONGA_STORAGE_ENGINE=1h

4 编译完成后执行

    make && make install

5 编译完成后将/app/mysqldb/bin加入到环境变量

        echo 'PATH=/app/mysqldb/bin:$PATH' > /etc/profile.d/mysql.sh

6 给/app/mysql修改属主

        chgrp mysql /app/mysql

7 创建多实例数据库的存放目录并修改属主与属组

        mkdir -pv /mysqldb/{3306,3307,3308}/{etc,log,data,pid,socket}

8 分别给各个实例创建数据库

       /app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3306/data
    /app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3307/data
    /app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3308/data

9 给3306创建配置文件,由于是编译安装,所以内容在编译的时候都指定了就无需修改

        cp /app/mysql/support-files/my-huge.cnf /mysqldb/3306/etc/my.cnf

10 给其余实例创建配置文件并编辑

        cp /etc/my.cnf /mysqldb/3307/etc/my.cnf
        vim /mysqldb/3307/etc/my.cnf
    当中[mysqld]这个模块下面的端口以及路径需要手动更改为3307,并且添加两行
        port = 3307
        socket = /mysqldb/3307/socket/mysql.sock
        datadir = /mysqldb/3307/data
    在最后一行添加以下两行;
        [mysql_safr]
        log-error=/mysqldb/3307/log/mariadb.log
        pid-file=/mysqldb/3307/pid/mariadb.pid
    cp /etc/my.cnf /mysqldb/3308/etc/my.cnf
        当中[mysqld]这个模块下面的端口以及路径需要手动更改为3308,并且添加两行
        port = 3308
        socket = /mysqldb/3308/socket/mysql.sock
        datadir = /mysqldb/3308/data
    在最后一行添加以下两行;
        [mysql_safr]
        log-error=/mysqldb/3308/log/mariadb.log
        pid-file=/mysqldb/3308/pid/mariadb.pid

11 上传二进制多实例安装时候的那个启动脚本并进行修改;

            chown mysql.mysql mysqld
        chmod 700 mysqld
        vim mysqld
        将端口号修改为3307即可,根据实际情况更改变量值就OK

12 在/mysqldb/3308/下同理,上传脚本文件修改端口

            cd /mysqldb/3308/
        chown mysql.mysql mysqld
        chmod 700 mysqld
        vim mysqld
        将端口号修改为3308即可;

破解mysql口令,此处修改的是用yum安装的mariadb,所以配置文件是/etc/my.cnf,如果是多实例的那个就要分别去到各个目录下修改配置文件

    vim /etc/my.cnf
    skip_grant_tables          #添加此行,跳过密码检查