[日期:2017-10-08] | [字体:大 中 小] |
MariaDB 是MySql的一个分支。 了解一下数据库的发展历史,我们知道,MySql数据库不但二次易主,而且还被打入了冷宫(先被sun收购,然后sun被Oracle收购)。因为Oracle有自己的数据库,同时只有Oracle自己的员工可以进行MySql的研发,所以MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。
MariaDB不仅仅是Mysql的一个替代品,它的主要目的是创新和提高Mysql的技术。
MariaDB是基于MySql原来技术的基础上,进行的新的开发发展,同时兼容绝大多数MySql原有技术,对于开发者来说,几乎感受不到任何的不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
LAMP架构盛极一时,这离不开MySQL的免费与易用,但是在Oracle收购了Sun之后,很多公司开始担忧MySQL的开源前景,而最近Oracle进一步闭源的举措更是让人难以安心,众多互联网公司纷纷开始寻求MySQL的替代方案。 MariaDB继续保持开源的理念,源源不断的发布新版本,为互联网技术提供了无限的可能,同时很多互联网巨头已经迁移并使用了MariaDB,所以我们接下来就开始学习MariaDB啦。
- 首先去MariaDB的官方网站上下载MariaDB的二进制安装包,下载地址 https://downloads.mariadb.org/
- 准备一个没有安装过MySql的干净的系统。
首先准备数据库能够所需要使用的用户和用户组。
- # 添加名为mysql的用户组,并指定gid 为306
- # -r 为创建系统用户组
- groupadd -r -g 306 mysql
- # -r 表示创建系统用户
- # -g 表示执行所属组的gid 为306
- # -u 表示指定uid 为306
- # -m 创建家目录
- # -d 指定家目录的路径
- # mysql 想要添加的用户名
- useradd -r -g 306 -u 306 –m –d /app/data mysql
指定数据目录,数据目录的作用就是存储数据库的位置。以 /app/dbdata 为例。
- chown mysql: mysql / app / dbdata
下面我们用一张动态图来演示上面的两个步骤。
对于已经编译好的二进制格式的程序包,通常我们解压之后就能够直接使用数据库。但是事实上不是这么简单。如果我们曾经自己编译过程序包的话,我们就会知道,在编译二进制程序的过程中,需要指定一些脚本的目录,或者是二进制执行程序的路径。对于MariaDB也是如此,因为我们下载的是已经编译好的二进制程序包,所以我们解压的程序也要放到固定的目录下,这个目录就是/usr/local/mysql。
下面就是解压二进制程序的步骤,不过我们没有直接创建mysql 目录,而是建立了一个软连接指向了我们解压之后的目录。
- # 将压缩文件解压到 /usr/local 路径下
- [root@localhost ~]#tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local
- # 切换目录
- [root@localhost ~]cd /usr/local/
- # 针对解压后的路径 建立软连接
- [root@localhost local]#ln -sv mariadb-10.2.8-linux-x86_64/ mysql
- # 查看建立之后的软连接
- [root@localhost local]#ll -d m*
- drwxrwxr-x 12 1021 1004 290 Aug 18 04:16 mariadb-10.2.8-linux-x86_64
- lrwxrwxrwx 1 root root 28 Sep 27 09:39 mysql -> mariadb-10.2.8-linux-x86_64/
- # 修改目录的权限,让mysql 用户具有全部最高权限。
- [root@localhost local]#chown -R root:mysql /usr/local/mysql/
- [root@localhost local]#ll -d m*
- drwxrwxr-x 12 root mysql 290 Aug 18 04:16 mariadb-10.2.8-linux-x86_64
- lrwxrwxrwx 1 root root 28 Sep 27 09:39 mysql -> mariadb-10.2.8-linux-x86_64/
下面我们去查看一下 解压后的目录内一共都包含哪些内容。
- [root@localhost mysql]#ll
- total 176
- drwxrwxr-x 2 root mysql 4096 May 3 02:05 bin
- -rw-r--r-- 1 root mysql 17987 Aug 17 18:05 COPYING
- -rw-r--r-- 1 root mysql 86263 Aug 17 18:05 COPYING.thirdparty
- -rw-r--r-- 1 root mysql 2275 Aug 17 18:05 CREDITS
- drwxrwxr-x 3 root mysql 18 Aug 18 04:16 data
- -rw-r--r-- 1 root mysql 8245 Aug 17 18:05 EXCEPTIONS-CLIENT
- drwxrwxr-x 3 root mysql 19 Aug 18 04:15 include
- -rw-r--r-- 1 root mysql 8694 Aug 17 18:05 INSTALL-BINARY
- drwxrwxr-x 4 root mysql 318 May 3 02:05 lib
- drwxrwxr-x 4 root mysql 30 Aug 18 04:16 man
- drwxrwxr-x 11 root mysql 4096 Aug 18 04:16 mysql-test
- -rw-r--r-- 1 root mysql 2371 Aug 17 18:05 README.md
- -rw-r--r-- 1 root mysql 19510 Aug 17 18:05 README-wsrep
- drwxrwxr-x 2 root mysql 30 Aug 18 04:16 scripts
- drwxrwxr-x 30 root mysql 4096 Aug 18 04:16 share
- drwxrwxr-x 4 root mysql 4096 Aug 18 04:16 sql-bench
- drwxrwxr-x 3 root mysql 275 Aug 18 04:16 support-files
- bin: 可执行的二进制程序的存放目录,客户端程序mysql就位于这个目录下。
- COPYING:版权以及开源信息
- COPYING.thirdparty: 版权信息
- CREDITS:关于MariaDB软件基金会的一些相关信息,里面还有国内的互联网巨头阿里
- data:默认的数据库存放目录,如果我们一开始没有指定数据库存放目录的话,那就会被存储到这个位置。
- EXCEPTIONS-CLIENT:例外情况
- include:MariaDB 所需要的一些程序文件
- INSTALL-BINARY: 安装帮助文档,可以详细阅读,对安装数据库有很大的帮助
- lib: 软件运行所需要的库文件
- man:软件的帮助文档
- mysql-test: 数据库的测试组件
- scipts:mysql初始化初始化时要用到的脚本文件,通读一下脚本,可以了解Mysql 的安装过程
- share: 共享的文件内容
- support-files: mysql 正常运行所需要的配置文件或者文档,这一点很重要,如果我们要自定义配置文件的话,就需要参考这里面的配置文件来进行定义。
这里有一点需要注意:data目录是数据库的存放路径,我们在之前已经手动指定。在实际生产中,企业数据增长很快,数据库文件有可能会很大,因此最好将该目录指定到一个单独的磁盘上,或者大分区,或者使用逻辑卷都可以,避免因物理空间不足,导致出现故障。
MariaDB 的配置文件可以存放在多个路径下面。但是配置文件的查找次序是固定的。这样也就导致了,配置文件具有了优先级,后面的配置会覆盖掉前面的配置(配置参数相同的情况下)。 我们参考MariaDB 安装路径下的support-files 中的配置文件,创建一个我们自己的配置文件并存放于/etc/mysql/my.cnf 中
- # 创建配置文件路径
- [root@localhost ~]#mkdir /etc/mysql
- [root@localhost ~]#cd /etc/mysql
- # 将参考文件复制到我们创建的mysql 路径下
- [root@localhost mysql]#cp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf
然后在这个配置文件中,加入我们刚刚的指定的一些目录和信息。如下图所示。
前面我们说过,配置文件的查找执行是有一定顺序的。当MariaDB安装成功之后,执行下面的命令,就可以查看到配置文件的查找顺序了。
- # 创建配置文件路径
- [root@localhost ~]#mkdir /etc/mysql
- [root@localhost ~]#cd /etc/mysql
- # 将参考文件复制到我们创建的mysql 路径下
- [root@localhost mysql]#cp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf
进入到 /usr/local/mysql/ 路径下,创建数据库文件。在创建数据库的同时指定数据库存放目录以及默认用户。
- [root@localhost mysql]#cd /usr/local/mysql/
- [root@localhost mysql]#./scripts/mysql_install_db --datadir=/app/dbdata --user=mysql
- # 切换到我们指定的数据库存放路径下面,可以看到一些相关文件。这里面的每一个路径就是一个数据库。
- [root@localhost mysql]#cd /app/dbdata/
- [root@localhost dbdata]#ls
- aria_log.00000001 ib_buffer_pool ib_logfile0 mysql mysql-bin.index performance_schema
- aria_log_control ibdata1 ib_logfile1 mysql-bin.000001 mysql-bin.state test
因为CentOS 6 和CentOS 7 的日志路径有所不同,所以创建的日志文件的路径也是不一样的。CentOS6 中是
,而CentOS 7 中则是
- /var/log/mysqld.log
- /var/log/mariadb/mariadb.log
- # 创建文件路径 [root@localhost mysql]#mkdir /
- var / log / mariadb
- # 创建日志文件 [root@localhost mysql] /
- var / log / mariadb / mariadb.log
- # 修改文件权限 [root@localhost mysql]#chown mysql /
- var / log / mariadb / mariadb.log
如果这一步,不确定应该创建哪些文件,那么就可以先执行第七步操作,然后根据第七步的错误提示,来创建我们所需要的文件。
将mysql的服务脚本复制到服务目录下。因为CentOS7 与低版本的服务兼容,所以我们就直接将脚本复制到/etc/init.d/目录下就好。
- #复制mysql的脚本到服务目录下
- [root@localhost mysql]#cp support-files/mysql.server /etc/rc.d/init.d/mysqld
- # 将mysql的服务添加到开机启动中
- [root@localhost mysql]#chkconfig --add mysqld
- [root@localhost mysql]#chkconfig --list
- Note: This output shows SysV services only and does not include native
- systemd services. SysV configuration data might be overridden by native
- systemd configuration.
- If you want to list systemd services use 'systemctl list-unit-files'.
- To see services enabled on particular target use
- 'systemctl list-dependencies [target]'.
- mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- # 启动MySQL 服务
- [root@localhost mysql]#service mysqld start
- Starting mysqld (via systemctl): [ OK ]
- 如果我们在第六步没有指定日志文件或者指定了日志文件,但是忘记修改权限的话,这一步都会出错的,不过出错了也不要着急,根据提示信息一点一点来修改就可以了。
- 我们在这一步中将mysql的服务脚本复制到了/etc/rc.d/init.d/路径下,这是因为CentOS 7兼容了CentOS 6 的服务模式。当然也可以按照CentOS 7的服务管理方式来进行,配置文件位于
路径下。
- /usr/lib/systemd/system
完成了前面的几步操作,我们就已经完成了大部分的工作,此时服务已经启动,我们可以使用ss 工具来查看3306端口是否已经开启。 但是此时,我们使用mysql 命令通过客户端去访问mysql数据库的话,会提示找不到mysql 命令,所以我们要指定一下,mysql 命令的环境变量。 前面我们说过,mysql解压之后一些二进制的可执行文件位于 解压后目录的/bin文件夹下,所以我们将这个路径添加到环境变量中。
- # 单独指定一个路径来修改环境变量,这样便于管理。
- [root@localhost mysql]#cat /etc/profile.d/mysql.sh
- export PATH=/usr/local/mysql/bin:$PATH
- # 执行一下这个脚本,使环境变量生效
- [root@localhost mysql]#. /etc/profile.d/mysql.sh
完成了第七步之后,我们已经能够顺利的访问到数据了,甚至匿名访问也是的。可是此时的数据库还是不足够安全的,并不能投入到实际的生产中使用,所以我们需要对数据库进行安全初始化。
我们根据安装文件中提供的安全初始化脚本,来进行数据库的安全初始化,详细查看下面的这张动图。
下面对图中修改过的几项进行一个详细的解释
- # 是否重新设置root用户的密码
- Set root password? [Y/n] y
- # 是否删除匿名用户
- Remove anonymous users? [Y/n] y
- # 是否不允许root用户远程登陆
- Disallow root login remotely? [Y/n] n
- # 是否删除测试数据库
- Remove test database and access to it? [Y/n] y
- # 重新加载可用的数据库表
- Reload privilege tables now? [Y/n] y
以上,我们就详细的介绍了在CentOS 7 中安装MariaDB 10.2.8 版本的全部过程。并且我们只是进行了简单的配置,在实际生产中,会经常使用到MariaDB,所以将整个安装过程写成一个脚本,或许也是一个不错的选择。若有问题,欢迎留言。
来源: http://www.linuxidc.com/Linux/2017-10/147343.htm