CentOS6.x编译安装MariaDB 10.x 及系统初始化

MariaDB介绍

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。

MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被Oracle收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

2008年,Sun收购MySQL,然后2010年Oracle又收购了Sun,MySQL落入了Oracle手中。Oracle与开源社区关系的一直不太好,将MySQL弄成了社区版和企业版,不能免费商业使用。MySQL企业版的新功能不公开源代码,这样让用户很不爽。MariaDB 则没有这方面的问题。

有必要从MySQL切换到MariaDB实例:
Red Hat企业发行版RHEL 7可能会使用MariaDB替代MySQL,一旦RHEL完成切换,基于RHEL的社区版CentOS将会紧跟着作出改变
Fedora也计划在Fedora 19中的以MariaDB取代MySQL
维基百科已经使用MariaDB取代了MySQL

与MySQL相比,MariaDB的优势在于:
Maria 存储引擎
PBXT 存储引擎
XtraDB 存储引擎
FederatedX 存储引擎
更快的复制查询处理
线程池
更少的警告和bug
运行速度更快
更多的 Extensions (More index parts, new startup options etc)
更好的功能测试
数据表消除
慢查询日志的扩展统计
支持对 Unicode 的排序

为了将开源进行到底,接下来让我们编译安装并使用一个MariaDB

安装前准备

配置防火墙,开启3306端口

vi /etc/sysconfig/iptables  #编辑
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT  #允许3306端口通过防火墙

特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:

**********************************************************************************
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
**********************************************************************************
/etc/init.d/iptables restart #最后重启防火墙使配置生效

关闭SELINUX

vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq!  #保存退出
shutdown -r now #重启系统

系统约定

MariaDB安装包存放位置:/data/software
MariaDB编译安装位置:/data/apps/mysql
MariaDB数据库存放位置:/data/mysql

编译安装MariaDB

注意:MariaDB的编译安装方式与MySQL相同

系统操作环境的设置

创建生产环境中数据目录
# mkdir -pv /data/apps/mysql
创建数据目录
# mkdir -pv /data/mysql

创建mysql用户mysql组

考虑到应用安全

  
# groupadd mysql     创建mysql组
# 建立用户 / 其实只要有这一条就行 / 它会自动建立用户组
# useradd -s /sbin/nologin -g mysql mysql 创建mysql用户
# chown mysql:mysql /data/mysql 更改数据目录的属主属组

安装编译器cmake

# yum -y install cmake

安装特定的开发包(防止编译时出错)
# yum -y install readline-devel zlib-devel openssl-devel

cmake指定编译选项的方式不同于make,其实现方式对比如下:
./configure           cmake .
./configure --help    cmake . -LH or
                                                                                                                              
指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/data/apps/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc                                                                                                                                                                                                                                                                                                    
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
                                                                                                                                      
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT_<engine>_STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
                                                                                                                                                           
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
                                                                                                                                                                
其它常用的选项:
-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_DEBUG=0
-DENABLE_PROFILING=1                                                                                                                                                                                                                                                                                                
如果想清理此前的编译所生成的文件,则需要使用如下命令:
make clean
rm CMakeCache.txt

下载MariaDB源码包mariadb-10.0.12

wget -c -O linux/nginx_php/mariadb/mariadb-10.0.12.tar.gz http://mirrors.hustunique.com/mariadb/mariadb-10.0.12/source/mariadb-10.0.12.tar.gz

编译安装

# tar xf mariadb-10.0.12.tar.gz
# cd mariadb-10.0.12
# cmake . -DCMAKE_INSTALL_PREFIX=/data/apps/mysql -DMYSQL_DATADIR=/data/mysql/ -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
# make && make install

准备MariaDB脚本及配置文件

初始化数据库

# cd /data/apps/mysql
# chown -R mysql:mysql *  更改属主属组
# scripts/mysql_install_db --datadir=/data/mysql --user=mysql 初始化库文件
# chown -R root * 更改属主为root

提供脚本
# cd /data/apps/mysql
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 提供脚本
# chmod +x /etc/rc.d/init.d/mysqld   赋予执行权限
# chkconfig --add mysqld   添加mysqld为系统服务
# chkconfig mysqld on      添加为开机启动

提供配置文件
# cd /data/apps/mysql
# cp support-files/my-large.cnf  /etc/my.cnf
# vim /etc/my.cnf 编辑配置文件[mysqld]段填写如下内容
[mysqld]
datadir = /data/mysql  数据目录
thread_concurrency = 4  设置线程数=核心数x2

提供二进制文件,库文件,头文件,man手册

提供二进制文件
# echo 'export PATH=/data/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
提供库文件
# echo '/data/apps/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
提供头文件
# ln -sv /usr/local/include /usr/include/mysql
提供man手册
# echo 'MANPATH /data/apps/mysql' >> /etc/man.config
# man -M /data/apps/mysql/man mysqld 让man手册立刻生效为最新

启动服务,连接MariaDB服务器

启动服务
# service mysqld start
# ss -ntl | grep :3306

1

2

初始化MariaDB

初始化第一个操作

	
配置文件my.cnf
          集中式的配置:多个应用程序共用的配置文件
          [mysqld]
          [mysqld_safe]
          [client]
查看mysql服务器的所有配置信息
         #cd /data/apps/mysql/bin
         #. /mysqld --help --verbose | head -20
Default options are read from the following files in the given order:
         /etc/mysql/my.conf  /etc/my.cnf  ~/.my.conf
         使用配置文件的方式
         1、它一次查找每个需要查找的文件,结果是所有文件的并集
         2、如果某参数在多个文件中出现多次,后读取的最终生效
                                                                   
       # /data/apps/mysql/bin/mysqld --help --verbose
         1、显示mysqld程序启动时可用的选项,通常都是长选项
         2、显示mysqld的配置文件中可用的服务变量
            mysql> SHOW GLOGAL VARIABLES
            mysql> SHOW SESSION VARIABLES

初始化第二个操作

1、删除所有匿名用户
mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'127.0.0.1';

用户名账号由两部分组成username@host
host还可以使用通配符
%:任意长度的任意字符
_: 匹配任意单个字符
2、给所有的root用户设定密码:

  第一种方式
     mysql> set password for usrName@hostName = password('your_passwd');
   第二种方式
     mysql> update user set password = password('your_passwd') where user = 'root'
     mysql> flush privileges;
   第三种方式 (shell命令)
    # mysqladmin -uUserName -hHost password 'new_passwd' -p
      Host为远程mysql服务器的ip地址
    # msyqladmin -uUserName -hHost -p flush-privileges;

3

参考资料:
Mariadb官网:https://mariadb.org/
编译安装MariaDB 及系统初始化:http://jungege.blog.51cto.com/4102814/1394924
官方安装文档:https://mariadb.com/kb/zh-cn/mariadb/3026/3028/generic-build-instructions/
MariaDB-5.5.32源码编译安装:http://blog.linuxeye.com/352.html
MariaDB-5.5.33a 编译安装 [ 完结 ]:http://www.oschina.net/question/929143_127621
centos 6 编译安装 mariadb-10.0.2 脚本:http://luyucia.blog.51cto.com/2212441/1198386
编译Mariadb10.10版数据库:http://shunzi.blog.51cto.com/8289655/1395620
CentOS 6.4下编译安装MariaDB10:http://readme.org.cn/2014/06/05/Compiling-MariaDB-10-on-Centos64/
MySQL CMake参数说明手册:http://www.blogjava.net/kelly859/archive/2012/09/04/387005.html
How to create an RPM package/zh-cn:https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn

发表评论?

2 条评论。

  1. 之前玩过编译php,编译数据库还没玩过,要很长时间吧?

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据