MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB 10.11
mariadb 10.11 是当前最新的长支持版本,已经GA,可用于生产环境,并且版本维护到2028年,如果有新系统需要使用mariadb,可以选择这个大版本。
本文主要演示如何在centos系统中使用docker快速安装mariadb。
使用 docker 安装 mariadb 10.11
安装 docker
Docker是一个开放源代码的开放平台软件,用于开发应用、交付应用和运行应用。Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒,从而提高交付软件的速度。 Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、更能高效地利用服务器。
docker 的安装也很简单,在rhel系统中只需要yum一键安装即可。
yum install docker-ce
拉取 mariadb 10.11 镜像
随着版本更新,对应的docker镜像也会更新,所以只需要拉取想要的版本即可,这里的10.11表示这个大版本的最新小版本,如果不加版本号,则表示将拉取mariadb的最新版本。
这里 docker pull mariadb:10.11 和 docker pull mariadb:10.11.3 命令是等效的。
$ docker pull mariadb:10.11
Trying to pull repository docker.io/library/mariadb ...
10.11: Pulling from docker.io/library/mariadb
d1669123f281: Pull complete
7942299fe584: Pull complete
ca116927bbe1: Pull complete
9c0f0b5293ed: Pull complete
d45a2cae5b8e: Pull complete
818ec8e8ed03: Pull complete
63656f4d882b: Pull complete
dd430f2c8014: Pull complete
Digest: sha256:b11a86131ac592eaabede175b3547d12d2c96d63c71936af28217ffc3bb3fee2
Status: Downloaded newer image for docker.io/mariadb:10.11
查看下载的镜像
通过docker images语法查看下载的镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mariadb 10.11 9a79847e85fb 4 days ago 403 MB
启动容器
通过docker run 命令调用对应镜像,启动容器。
$ docker run --name mariadb-10.11 -e MARIADB_ROOT_PASSWORD=123456 -p 3316:3306 --security-opt seccomp=unconfined -d mariadb:10.11
29bddd40c0e1d1776f61cf04b95ad451a40b06fcc575337fb94069c8a5eda472
这里解释一下各个参数的含义,
- name:是启动后容器的名字
- e:是传递给容器内的参数,比如这里加了
MARIADB_ROOT_PASSWORD是指容器启动后,容器内部的mariadb的root密码为123456 - d: 是镜像的名字和版本号,默认不加会使用latest最新版本
Ps.
这里如果不加参数 --security-opt seccomp=unconfined 则会遇到报错
$ docker logs 02177d4a182a
2023-06-07 01:06:04+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.11.3+maria~ubu2204 started.
2023-06-07 01:06:05+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config
command was: mariadbd --verbose --help
Can't initialize timers
Ref:
https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
查看启动后的容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
29bddd40c0e1 mariadb:10.11 "docker-entrypoint..." 14 seconds ago Up 13 seconds 0.0.0.0:3316->3306/tcp mariadb-10.11
类似于 linux 查看进程,docker查看正在运行的容器可以使用命令 docker ps,更进一步说,有些容器停止或者中止运行,则可以使用docker ps -a 查看,即查看所有容器的意思。
登入数据库
通过docker exec命令可以对容器进行操作,后面接mairadb登入命令,即可登录数据库。
$ docker exec -it mariadb-10.11 mariadb -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.11.3-MariaDB-1:10.11.3+maria~ubu2204 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
查看版本、当前时间:
MariaDB [(none)]> select version();
+-----------------------------------------+
| version() |
+-----------------------------------------+
| 10.11.3-MariaDB-1:10.11.3+maria~ubu2204 |
+-----------------------------------------+
1 row in set (0.000 sec)
MariaDB [(none)]> select now();
+---------------------+
| now() |
+---------------------+
| 2023-06-07 01:23:21 |
+---------------------+
1 row in set (0.000 sec)
到此,快速使用 mariadb 的工作就达成了,数据库是基石,有数据才能支撑业务运行,才能做多好玩的事情。




