当前位置: 首页 > news >正文

linux安装minio并使用

前言:

因最新版的minio无法在后台管理页面配置用户及权限,根据官方文档总结本文,通过管理工具mc命令,进行用户管理及权限配置。

官网文档及下载地址:

https://min.io/download?view=aistor-custom

1、下载并安装

1.1 命令下载及安装

sudo dnf install minio.rpmmkdir ~/miniominio server ~/minio --console-address :9001

1.2 验证安装

打开浏览器访问:http://localhost:9001
默认账号密码均为:minioadmin
在这里插入图片描述

1.3 安装管理客户端

官网安装地址:

https://min.io/docs/minio/linux/reference/minio-mc.html

或通过 命令下载及安装

wget https://dl.min.io/client/mc/release/linux-amd64/mcchmod +x mcsudo mv mc /usr/local/bin/mc

1.4 验证mc安装

mc alias set myminio http://127.0.0.1:9000 minioadmin minioadmin

在这里插入图片描述
如图显示连接成功

1.5 常用命令

新增用户

mc admin user add myminio newuser newusersecret

例:
在这里插入图片描述

删除用户

mc admin user rm myminio demo1

在这里插入图片描述

添加分组

mc admin group add  myminio groupname username

例:
在这里插入图片描述
查看分组

mc admin group ls  myminiomc admin group info  myminio group1

例:
在这里插入图片描述

为用户demo1创建密钥

mc admin accesskey create  myminio demo1    --access-key demo1accesskey   --secret-key demo1secretkey 

在这里插入图片描述
给用户demo1添加读写权限

mc admin policy attach  myminio readwrite --user demo1

在这里插入图片描述
修改默认管理员账号密码

vim ~/.bashrc
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=admin123

保存,退出,刷新环境变量

source ~/.bashrc

重启minio

2. java使用minio

2.1 引入依赖

        <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.17</version></dependency>

2.2更改application.yml配置

minio:endpoint: http://192.168.52.152:9000accesskey: demo1accesskeysecretkwy: demo1secretkey

2.3 添加配置类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** minio 属性值*/
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProp {//连接urlprivate String endpoint;//公钥private String accesskey;//私钥private  String secretkwy;
}
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** minio核心配置类* 通过注入 MinIO 服务器的相关配置信息,得到 MinioClient 对象,我们上传文件依赖此对象*/
@Configuration
public class MinioConfig {@Autowiredprivate MinioProp prop;/*** 获取 MinioClient* @return MinioClient*/@Beanpublic MinioClient minioClient() {return MinioClient.builder().endpoint(prop.getEndpoint()).credentials(prop.getAccesskey(),prop.getSecretkwy()).build();}
}

2.4 工具类


import io.minio.*;
import io.minio.http.Method;
import io.minio.messages.Item;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.io.ByteArrayInputStream;
import java.io.InputStream;/*** minio操作类*/
@Component
public class MinioUtils {@Autowiredprivate MinioClient client;@Autowiredprivate MinioProp minioProp;/*** 创建桶** @param bucketName 桶名称*/@SneakyThrowspublic void createBucket(String bucketName) {boolean found =client.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!found) {client.makeBucket(MakeBucketArgs.builder().bucket(bucketName).region("cn-beijing").build());}}/*** 删除桶** @param bucketName 桶名称*/@SneakyThrowspublic void removeBucket(String bucketName) {client.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());}/*** 获取文件信息** @param bucketName 桶名称* @param objectName 文件名称* @return*/@SneakyThrowspublic StatObjectResponse getObjectInfo(String bucketName, String objectName) {return client.statObject(StatObjectArgs.builder().bucket(bucketName).object(objectName).build());}/*** 上传文件** @param bucketName 桶名称* @param objectName 文件名* @param stream     流* @param fileSize   文件大小* @param type       文件类型* @throws Exception*/public void putObject(String bucketName, String objectName, InputStream stream, Long fileSize, String type) throws Exception {client.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(stream, fileSize, -1).contentType(type).build());}/*** 判断文件夹是否存在** @param bucketName 桶名称* @param prefix     文件夹名字* @return*/@SneakyThrowspublic Boolean folderExists(String bucketName, String prefix) {Iterable<Result<Item>> results = client.listObjects(ListObjectsArgs.builder().bucket(bucketName).prefix(prefix).recursive(false).build());for (Result<Item> result:results){Item item = result.get();if (item.isDir()){return true;}}return false;}/*** 创建文件夹* @param bucketName 桶名称* @param path 路径*/@SneakyThrowspublic void createFolder(String bucketName,String path) {client.putObject(PutObjectArgs.builder().bucket(bucketName).object(path).stream(new ByteArrayInputStream(new byte[]{}),0,-1).build());}/*** 获取文件在minio在服务器上的外链* @param bucketName 桶名称* @param objectName 文件名* @return*/@SneakyThrowspublic String getObjectUrl(String bucketName,String objectName){return client.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket(bucketName).object(objectName).build());}}

相关文章:

  • 使用CommonAPI开发Some/IP的流程
  • Spring-MyBatis基本操作
  • rent8_wechat-最常用出租屋管理系统-微信小程序
  • 华为云Flexus+DeepSeek征文 | 基于Flexus X实例的金融AI Agent开发:智能风控与交易决策系统
  • C++题解:【入门】快乐的马里奥(BFS)
  • 从代码学习深度学习 - 预训练BERT PyTorch版
  • 【LeetCode 热题 100】15. 三数之和——排序 + 双指针解法
  • FastAPI框架的10个重要知识点总结
  • Chromium 136 编译指南 macOS篇:编译流程(五)
  • Linux进程间通信——信号
  • kibana和elasticsearch安装
  • (详细介绍)线性代数中的零空间(Null Space)
  • Git 使用手册:从入门到精通
  • MCPServer编程与CLINE配置调用MCP
  • ubuntu20.04速腾聚创airy驱动调试
  • Redis哨兵模式的学习(三)
  • 百度萝卜快跑携4颗禾赛激光雷达进军迪拜,千辆L4无人车开启全球化战略
  • Tensor的常用计算方法(torch示例说明)
  • RPC - 客户端注册和发现模块
  • Unity Addressable使用之AddressableAssetSettings
  • 长沙响应式网站建设/搜索引擎排名google
  • .net企业门户网站开发/每日新闻播报
  • 网站首页布局/黄页网站推广效果
  • 网站的图文链接怎么做的/百度文库登录入口
  • 网站建设具体工作/北京seo多少钱
  • 建站优化收费/php搭建一个简单的网站