随着Oracle买下Sun,MySQL也落入了关系型数据库王者之手。而早在2009年,考虑到Oracle的名声以及其入手之后闭源的可能性,MySQL之父的Michael便先行一步,以他女儿Maria的名字开始了MySQL的另外一个衍生版本:MariaDB。 Michael 的名声很好,很快追随者很快排满了八条街,主流的Linux发行商基本上都开始转而支持使用MariaDB以规避MySQL不确定性的风险以及对Michael的看好。而MariaDB则被看作MySQL的替代品,原因很简单作为MySQL之父的Michael可以引导过去开源成功的MySQL,自然在其主导下的MariaDB也自然很值得期待。左手把MySQL卖掉挣得大笔银子,右手再创分支,开启新的衣钵,这便是技术强者的快意人生,一壶浊酒喜相逢,多少IT事,都付笑谈中。
MariaDB的前世今生
年份 | 事件 |
---|---|
2009年 | Michael Widenius创建新项目Michael以规避关系型数据库开源的可能风险.直到5.5的版本,一直按照MySQL的版本进行发行。使用者基本上不会感受到和MySQL不同的地方。 |
2012年 | MariaDB开始按照自己的节奏和版本发行方式进行发行,初始版本为:10.0.0,此版本以MySQL5.5为基础,同时合并了MySQL5.6的相关功能。 |
当前版本
项目 | 内容 |
---|---|
目前稳定版本 | 10.1 |
docker pull
使用Easypack下的alpine的MariaDB,当然你也可以直接使用官方镜像,没有太大区别,只是在Easypack的项目中,整理了一些常用的有Reputation的镜像,为了更好的进行集成和整合,进行了一个收集/整理/自定义的过程。
[root@liumiaocn ~]# docker pull liumiaocn/maria
Using default tag: latest
Trying to pull repository docker.io/liumiaocn/maria ...
latest: Pulling from docker.io/liumiaocn/maria
0a8490d0dfd3: Already exists
3a48a96147f6: Pull complete
4fe500b60fc8: Pull complete
Digest: sha256:359ea5cc2d8dcbd8245ca99a777e687f527c26a1e43c3bb12d05adf31ee7b1c2
Status: Downloaded newer image for docker.io/liumiaocn/maria:latest
[root@liumiaocn ~]# docker images |grep maria
docker.io/liumiaocn/maria latest 48db9d7b6891 8 hours ago 178.2 M
[root@liumiaocn ~]#
[root@liumiaocn ~]# docker run --name maria -d liumiaocn/maria
22d21c9fc299ef0107a67e5cd790a335a2399fe9611c38490eebf0eacec3310d
[root@liumiaocn ~]#
- 1
- 2
- 3
连接镜像
[root@liumiaocn ~]# docker exec -it maria /bin/sh
/ # hostname
22d21c9fc299
/ # which mysql
/usr/bin/mysql
/ #
- 1
- 2
- 3
- 4
- 5
- 6
版本确认
/ # mysql --version
mysql Ver 15.1 Distrib 10.1.21-MariaDB, for Linux (x86_64) using readline 5.1
/ #
- 1
- 2
- 3
看到Maria了,站在八条街外看人头涌动,心潮澎湃,想看MYSQL的看官也不要走,因为在接下来的命令中你会发现,基本上完全一样。
确认数据库
/ # mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.21-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
MariaDB [(none)]>
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
创建数据库
使用create database test创建名为test的数据库
MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]>
MariaDB [(none)]> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]>
- 13
- 14
- 15
- 16
- 17
连接数据库
使用use 数据库名 命令去连接所指定的数据库,比如use test,将会连接刚刚创建的test数据库,在连接之后的操作比如创建表,在没有指明数据库名的情况下均对于当前所连接的数据库起作用。
MariaDB [(none)]> use test
Database changed
MariaDB [test]>
- 1
- 2
- 3
基本操作
版本确认
虽然mysql –version也可以确认版本,就像Oracle一样,在连接实例之后才能进行的确认方式,不过没有Oracle那样复杂庞大的系统视图而已。
MariaDB [test]> select version();
+-----------------+
| version() |
+-----------------+
| 10.1.21-MariaDB |
+-----------------+
1 row in set (0.00 sec)
MariaDB [test]>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
字符串处理
MariaDB [test]> select "hello world"
-> ;
+-------------+
| hello world |
+-------------+
| hello world |
+-------------+
1 row in set (0.00 sec)
MariaDB [test]>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
简单计算
类似Oracle里面的select from dual, mysql里面可以直接select
MariaDB [test]> select 3*7;
+-----+
| 3*7 |
+-----+
| 21 |
+-----+
1 row in set (0.00 sec)
MariaDB [test]>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
总结
谁是更为正宗的MySQL,就像Jenkins和Hudson那样谁是更为正宗的Hudson那样,但是换完名称的Jenkins气场和影响力变得更为强大已经是无可辩驳的事实,所以,名称的改变不会带给人太多的冲击,最终还是要看气质。从海豚变成海豹是否就意味着更加强大,这也倒也未必,但是开源给我们带来的更多的一种可能性,确实是要为MariaDB点赞的地方。