介绍
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB 的目的是完全兼容MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。M
ariaDB 由 MySQL 的创始人麦克尔·维德纽斯主导开发,他早前曾以 10 亿美元的价格,将自己创建的公司 MySQL 卖给了 SUN,此后,随着 SUN 被甲骨文收购,MySQL 的所有权也落入 Oracle 的手中。
MariaDB 名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。
MariaDB 直到 5.5 版本,均依照 MySQL 的版本。因此,使用 MariaDB 5.5 的人会从 MySQL 5.5 中了解到 MariaDB 的所有功能。从 2012 年 11 月 12 日起发布的 10.0.0 版开始,不再依照 MySQL 的版号。10.0.x 版以 5.5 版为基础,加上移植自 MySQL 5.6 版的功能和自行开发的新功能。
在存储引擎方面,10.0.9 版起使用 XtraDB(名称代号为 Aria)来代替 MySQL 的 InnoDB。MariaDB 的 API 和协议兼容 MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用 MySQL 的连接器、程序库和应用程序也将可以在 MariaDB 下工作。在此基础上,由于担心甲骨文 MySQL 成为的一个更加封闭的软件项目,Fedora 的计划在 Fedora 19 中的以 MariaDB 取代 MySQL。
综上所述:MariaDB 数据库管理系统是 MySQL 的一个分支。是由 MySQL 之父 Michael 开发的。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB 官网:https://mariadb.org。
MariaDB的新特性
1、插件式存储引擎:存储管理器有多种实现版本,功能和特性可能均略有差别,用户可根据需要灵活选择;
2、更多的存储的存储引擎,MyISAM --> Aria,InnoDB --> XtraDB;
3、诸多扩展和新特性;
4、提供了较多测试组件;
5、truly open source;
存储引擎也称之为“表类型”;
安装与配置
CentOS 7 自身就已经提供了 MariaDB,所以下面以通用二进制格式的安装包在 CentOS 6 上安装 MariaDB 为例。
微信扫描文章首部二维码或搜索
zze_coding
关注我的微信公众号发送#mariadb
即可获取 MariaDB 5.5.46 安装包资源。
1、以免产生冲突,先卸载 MySQL 相关的程序:
$ yum remove mysql* -y
2、创建 mysql 用户:
$ groupadd -r -g 306 mysql
$ useradd -r -g 306 -u 306 mysql
3、解压 MariaDB 安装包到 /usr/local
下:
$ tar zxvf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/
4、以相对路径方式创建 MariaDB 的软链接 mysql
:
$ cd /usr/local/
$ ln -s mariadb-5.5.46-linux-x86_64/ mysql
5、把安装包所有内容的属主改为 root,属组改为 mysql:
$ cd mysql
$ chown -R root:mysql ./*
6、使用 MariaDB 提供的安装工具安装并指定安装用户和数据存放目录:
$ mkdir /mydata
$ ./scripts/mysql_install_db --user=mysql --datadir=/mydata
$ ls /mydata/
aria_log.00000001 aria_log_control mysql performance_schema test
还可通过
mysql_install_db
的--default-extra-file
来指定 MariaDB 的额外配置文件。
7、添加 mysql 服务:
$ cp support-files/mysql.server /etc/init.d/mysqld
$ chkconfig --add mysqld
$ chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
8、准备 mysql 的配置文件:
$ mkdir /etc/mysql
$ cp support-files/my-large.cnf /etc/mysql/my.cnf
配置格式:类 ini 格式,为各程序均通过单个配置文件提供配置信息;
配置文件查找次序:/etc/my.cnf
-->/etc/mysql/my.cnf
-->--default-extra-file=/PATH/TO/CONF_FILE
-->~/.my.cnf
;
9、修改 /etc/mysql/my.cnf
配置文件,在 mysqld
节点下添加如下配置:
datadir=/mydata
innodb_file_per_table=on
skip_name_resolve=on
10、测试启动 mysql:
$ service mysqld start
Starting MySQL.. SUCCESS!
11、环境变量中添加 mysql 可执行程序的路径:
export PATH="/usr/local/mysql/bin/:$PATH"
MariaDB程序的组成
客户端:
- mysql:CLI交互式客户端程序;
- mysqldump, mysqladmin 等;
服务端:
- mysqld_safe:线程安全模式;
- mysqld:标准模式;
- mysqld_multi:多实例模式;
服务器监听的两种socket地址
- ip socket:监听在 tcp 的 3306 端口,支持远程通信;
- unix sock:监听在 sock 文件上(
/tmp/mysql.sock
或/var/lib/mysql/mysql.sock
),仅支持本地通信,此种方式通信时 server 地址只能是localhost
或127.0.0.1
;
命令行交互式客户端程序:mysql
mysql 命令的常用选项如下:
-uUSERNAME
:用户名,默认为 root;-hHOST
:服务器主机;,默认为 localhost;-pPASSWORD
:用户的密码, 默认为空密码;
注意:MariaDB 用户账号由两部分组成:'USERNAME'@'HOST'
,其中 HOST
用于限制此用户可通过哪些主机远程连接 MariaDB 服务;
HOST
支持使用通配符:
%
: 匹配任意长度的任意字符,例:172.16.0.0/16
,172.16.%.%
;_
: 匹配任意单个字符;
直接执行 mysql
命令即可本地连接上 MariaDB 服务:
在 MariaDB
命令提示符下可使用的命令有两种,一种是客户端命令,另一种是服务端命令。
- 客户端命令:在客户端本地执行的命令,可使用
help
命令查看,每个命令都完整形式和简写格式。 - 服务端命令:它的作用是通过 mysql 协议发往服务器执行并取回结果,每个命令都必须命令结束符号,默认为分号(
';
');
常用查看操作
- 查看支持所有字符集:
SHOW CHARACTER SET
; - 查看支持所有排序规则:
SHOW COLLATIONS
; - 查看所有数据库:
SHOW DATABASES
; - 查看所有的引擎:
SHOW ENGINES;
- 查看数据库中的所有表:
SHOW TABLES [FROM db_name]
; - 查看表结构:
DESC [db_name.]tb_name
;
安全初始化:mysql_secure_installation
按上述方式安装完 mysql 后默认是没有密码的,可以通过 mysql_secure_installation
程序来执行安全相关初始化操作。
执行 mysql_secure_installation
命令后会有如下交互式提示信息:
$ mysql_secure_installation
# 输入 root 用户当前密码
Enter current password for root:
# 是否重新设定 root 用户的密码
Set root password?
# 是否移除匿名用户
Remove anonymous users?
# 是否禁止 root 用户远程登录
Disallow root login remotely?
# 是否移除测试库
Remove test database and access to it?
# 是否重载权限表
Reload privilege tables now?
评论区