序言
MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。 MinIO 提供与 Amazon S3 云存储服务兼容的 API,使用 MinIO 可以为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
Minio Server
要想使用 Minio,需要下载 Minio 的服务端并启动。
下载与安装
1 | wget https://dl.min.io/server/minio/release/linux-amd64/minio |
启动
执行以下命令将输出相关信息。1
2# 启动
MINIO_ROOT_USER=leeqingshui MINIO_ROOT_PASSWORD='#a123456' nohup ./minio server data --console-address ":9010" &
1 | RootUser: admin |
Minio Client
虽然 MinIO 实现了多用户权限控制管理,但是在前端控制台却无法对特定的云服务进行配置,而要去使用 MinIO Client(简称 mc)的相关命令进行配置。
下载与安装
1 | # 下载 |
云服务管理
默认情况下,Minio Client 自带部分云服务的配置,包括play
、gcs
、s3
。
添加云服务
通常情况下,我们都会新建一个自己的云服务,那么如何添加一个云服务呢?
使用以下命令即可:1
2
3
4
5# <YOUR-S3-ENDPOINT> 云服务地址,即 Minio Server 地址,如 http://127.0.0.1:9000, 必填
# <ALIAS> 赋予云服务别名,必填
# <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> 云存储服务账号密码,即 Minio Server 启动后 API 的端口,注意是 API 端口,不是控制台端口
# API 名是可选参数,默认不填则为 S3v4
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> [--api API-SIGNATURE]
云服务的配置内容在~/.mc/config.json
件中,此文件在我们第一次添加云服务时生成。
下面我们新增一个自己的云服务:1
./mc config host add local http://127.0.0.1:9000/ leeqingshui 123456
命令执行成功后,输出以下内容,生成了相关文件:1
2
3
4
5mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `local` successfully.
查看云服务信息
我们现在去~/.mc/config.json
看下配置内容:
1 | { |
可以看到,我们自定义的云服务新增成功了。
删除云服务
默认情况下,Minio 自带的三个云服务我们均不需要,那么删掉好了。
1 | ./mc config host remove gcs |
上述命令执行完成之后,再次查看~/.mc/config.json
文件,可以发现删除成功,现在只剩我们自己添加的了:1
2
3
4
5
6
7
8
9
10
11
12{
"version": "10",
"aliases": {
"local": {
"url": "http://127.0.0.1:9000",
"accessKey": "leeqingshui",
"secretKey": "123456",
"api": "s3v4",
"path": "auto"
}
}
}
桶管理
命令 | 说明 |
---|---|
./mc mb local/blog |
在local 云服务下创建blog 桶 |
./mc ls local |
列出local 云服务下的所有桶 |
./mc ls local/blog |
列出local 云服务下blog 桶的文件列表 |
权限管理
MinIO Client(mc)提供了admin
子命令来进行 Minio 的权限管理。
命令 | 说明 |
---|---|
mc admin user |
用户管理 |
mc admin group |
群组管理 |
mc admin policy |
策略管理 |
用户管理
mc admin user
命令,用于添加,删除,启用,禁用 MinIO 服务器上的用户。
用户新增
mc admin user add
命令可用于新增用户。
下面的命令执行后,在local
云服务下新增了一个newuser
用户,并且密码为newuser123
。1
2
3
4
5./mc admin user add local/ newuser newuser123
# 等同
./mc admin user add local/
Enter Access Key: newuser
Enter Secret Key: newuser123
禁用用户
mc admin user disable
命令可用于禁用用户。
下面的命令执行后,在local
云服务下禁用了newuser
用户。
1 | ./mc admin user disable local/ newuser |
启用用户
mc admin user enable
命令可用于启用禁用的用户。
下面的命令执行后,在local
云服务下启用了禁用的newuser
用户。
1 | ./mc admin user enable local/ newuser |
删除用户
mc admin user remove
命令可用于删除用户。
下面的命令执行后,在local
云服务下删除的newuser
用户。
1 | ./mc admin user remove local/ newuser |
查看所有用户信息
mc admin user list
命令可用于查看所有用户的信息。
下面的命令执行后,将显示在local
云服务下的所有用户信息。1
./mc admin user list --json local/
1 | {"status":"success","accessKey":"newuser","userStatus":"enabled"} |
显示特定用户信息
mc admin user info
命令可用于显示特定用户信息。1
./mc admin user info local newuser
群组管理
mc admin group
命令用于添加,删除,信息,列出,启用,禁用组。
组中添加用户(新建组)
mc admin group add
命令可用于在组中添加用户。
将一对用户添加到 MinIO 上的somegroup
组中。 如果组不存在,则会创建该组。
1 | mc admin group add local somegroup someuser1 someuser2 |
组中删除用户(删除组)
mc admin group remove
命令可用于在组中删除用户。
从 MinIO 的local
云服务下的somegroup
组中删除一对用户:
1 | mc admin group remove local somegroup someuser1 someuser2 |
从 MinIO 上删除组somegroup
仅在给定组用户为空时有效。
1 | mc admin group remove local somegroup |
获取组信息
mc admin group info
命令可用于获取组信息。1
mc admin group info local somegroup
列出所有组
mc admin group list
命令可用于列出所有组。1
mc admin group list local
禁用组
mc admin group disable
命令可用于禁用组。1
mc admin group disable local somegroup
启用组
mc admin group enable
命令可用于启用组。
1 | mc admin group enable local somegroup |
策略管理
对桶而言,policy 命令可以为其添加,删除,列出策略,获取有关策略的信息并为 MinIO 服务器上的用户设置策略。
命令 | 说明 |
---|---|
mc admin policy add | 添加新策略 |
mc admin policy set | 替换策略 |
mc admin policy remove | 删除策略 |
mc admin policy list | 查看策略列表 |
mc admin policy info | 查看策略信息 |
策略文件说明
Minio 使用json
格式的文件配置策略,具体说明如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{
"Version": "2012-10-17", # 日期勿动
"Statement": [
{
"Effect": "Allow",
"Action": [ // 权限列表
"s3:ListAllMyBuckets", // 查看所有的桶权限
"s3:ListBucket", // 查看桶内对象权限
"s3:GetBucketLocation", // 定位bucket权限
"s3:GetObject", // 下载权限
"s3:PutObject", // 上传权限
"s3:DeleteObject" // 删除权限
],
"Resource": [
"arn:aws:s3:::blog/*" // arn:aws:s3 默认即可,后面接*表示所有桶,用 blog/* 表示只针对 blog 这个桶
]
}
]
}
添加新策略
首先创建策略文件policy/blog.json
1 | { |
之后将blog
策略添加到策略数据库中:
1 | ./mc admin policy add local/ blog ./policy/blog.json |
输出Added policy blog successfully.
代表成功。
删除策略
执行以下命令后,将删除1
./mc admin policy remove local/ blog
输出Removed policy
blogsuccessfully.
代表成功。
显示桶策略的信息
执行以下命令后,1
./mc admin policy info local/ writeonly
1 | {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:PutObject"],"Resource":["arn:aws:s3:::*"]}]} |
在用户或组上设置固定策略
执行以下命令后,1
2
3
4
5mc admin policy set local/ writeonly user=someuser
Policy writeonly is set on user `someuser`
mc admin policy set local/ writeonly group=somegroup
Policy writeonly is set on group `somegroup`
设定指定策略到指定用户上
执行以下命令后,1
./mc admin policy set local blog user=chris
执行命令输出以下内容后代表成功1
Policy blog is set on user chris
列出指定桶所有固定策略
执行以下命令后,1
./mc admin policy list local/
1 | readonly |
Nginx 配置
http
1 | server { |
https
1 | server { |
扩展——文件匿名访问
存储桶策略若为private
,则无法被匿名用户访问,若想允许匿名访问,可以对桶进行如下设置:
定时备份
准备文件夹
1 | cd /data/software/minio |
创建备份脚本
1 | vim /data/software/minio/backups/scripts/backup.sh |
赋予执行权限
1 | chmod +x /data/software/minio/backups/scripts/backup.sh |
加入定时计划
1 | # 每天凌晨一点执行 |
文章信息
时间 | 说明 |
---|---|
2022-06-21 | 初稿 |
2022-06-26 | 完稿 |
2022-12-19 | 增加定时备份一节 |