首先声明一点,在容器中部署数据库不是一个好的方案。

关于这一点我当然清楚,只是为了更方便的安装部署,也就没所谓了,自己电脑家里办公需要Maria。

首先、docker版本

docker -v

# 或者

docker version

结果如下:

docker进入容器后yum not docker进入容器后进入mariadb_root用户

结论是:Docker version 20.10.14

从上图我们也看到了这两个命令的一个区别。

第二、拉取镜像

我们当然可以直接拉取,但是我们这里先看看都有哪些Maria的镜像:

docker search mariadb

以上命令是从docker 远程仓库中查询所有的镜像名为mariadb的镜像。

docker进入容器后yum not docker进入容器后进入mariadb_数据库_02

 

 该命令的返回值解读:

NAME:镜像仓库源的名称

DESCRIPTION:镜像描述

STARS:标星数量,就和GitHub是一样的,代表着点赞的意思

OFFICIAL:是否是docker官方发布

AUTOMATED:自动构建

拉取镜像:

docker pull mariadb

这个命令会拉取名称为mariadb的这个,且是最新版本的,因为我们没有指定版本。

docker进入容器后yum not docker进入容器后进入mariadb_root用户_03

 第三、创建容器、启动mariadb

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mariadb -d mariadb

docker进入容器后yum not docker进入容器后进入mariadb_mariadb_04

 第四、查看正在运行的容器

docker ps

docker进入容器后yum not docker进入容器后进入mariadb_docker_05

 第五、让Maria自动启动

docker container update --restart=always mariadb

docker进入容器后yum not docker进入容器后进入mariadb_docker进入容器后yum not_06

 第六、进入容器

docker exec -it mariadb bash

docker进入容器后yum not docker进入容器后进入mariadb_root用户_07

 第七、在容器内登录数据库

mysql -u root -p

# 或者
mysql -u root -p 密码

docker进入容器后yum not docker进入容器后进入mariadb_root用户_08

输入上面第一个命令后,会让我们输入我们运行容器的时候设置的root用户的密码,然后就进入了第二个红框的界面,这个时候我们就进入了mariadb的命令行中。 

第八、查看新创建的Maria中所有的数据库

show databases;

docker进入容器后yum not docker进入容器后进入mariadb_docker_09

注意,此时是在Maria的命令行中操作的,切不可退出。

我们看到了,有四个数据库,说明我们的Maria数据库已经创建好了。此时我们如果远程登陆的话,是需要创建一个自己的数据库的,当然你也可以直接连上面的数据库,不过这是不推荐的。

 第九、远程连接数据库

通过终端(或者叫做数据库客户端)连接我们的docker数据库。

docker进入容器后yum not docker进入容器后进入mariadb_docker_10

 上图是我连接的mysql这个数据库的参数,结果如何呢?

docker进入容器后yum not docker进入容器后进入mariadb_mariadb_11

 显示的数据库实际是2个,而不是我们在docker中的Maria中查询的那样,那么我们在客户端查询一下呢?实际上应该是一致的。

docker进入容器后yum not docker进入容器后进入mariadb_mariadb_12

看来如我们所想,确实是一致的,一共四个,具体这四个库的作用,不在本篇的讨论范围之内,有兴趣的小伙伴可以自行了解。

 第十、创建用户、创建数据库并赋权

实际工作中不大可能让你使用root用户登录数据库的,那么我们就需要创建一个用户了。

创建远程登陆用户:

CREATE USER dake@'%' identified BY '123456';

创建了dake这个用户,并让他可以远程登陆(@'%'),密码是:123456。

创建本地用户:

CREATE USER dake@'localhost' identified BY '123456';

查看所有的用户:

SELECT host,user FROM `user`;

 

docker进入容器后yum not docker进入容器后进入mariadb_docker_13

创建数据库:

CREATE database study;

 查看数据库:

SHOW DATABASES;

 

docker进入容器后yum not docker进入容器后进入mariadb_root用户_14

 

授予用户权限:

grant all privileges on study.* to dake;

以上命令是授予dake用户访问study数据库的权限。

重新加载权限表或者叫刷新权限:

flush privileges;

此时通过dake用户可以登录study数据库,可以查看study数据库的情况,但是如果想查看所有的数据库,或者查询所有的用户——即执行命令:

SHOW DATABASES;
SELECT host,user FROM `user`;

它会告诉你study数据库的user表不存在,因为这个是系统表,目前只有root用户可以访问。

不过没关系,我们可以给dake用户授予所有权限:

grant all privileges on *.* to dake;
flush privileges;

授予dake用户所有权限并刷新权限表。

此时我们再去查询所有数据库或者查看所有的用户情况:

SHOW DATABASES;
SELECT host,user FROM `user`;

docker进入容器后yum not docker进入容器后进入mariadb_mariadb_15

 

docker进入容器后yum not docker进入容器后进入mariadb_mariadb_16

 至此,我们通过docker创建Maria,新建了数据库study、创建了dake用户,并且授予了dake用户访问study数据库的权限(也可以授予所有的权限),现在我们可以开开心心的进行数据库操作了。