当前位置: 首页 > 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());}}
http://www.lryc.cn/news/573395.html

相关文章:

  • 在Docker、KVM、K8S常见主要命令以及在Centos7.9中部署的关键步骤学习备存
  • XCUITest + Objective-C 详细示例
  • FastGPT:开启大模型应用新时代(4/6)
  • Springboot 配置 FastJson 替换 Jackson
  • Rabbitmq集成springboot,手动确认消息basicAck、basicNack、basicReject的使用
  • 在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
  • Axios 在 Vue3 项目中的使用:从安装到组件中的使用
  • 升级到 .NET 9 分步指南
  • “最浅”的陷阱:聊聊二叉树最小深度的递归坑点与解法哲学
  • 秋招Day14 - MySQL - SQL优化
  • c++11标准(5)——并发库(互斥锁)
  • 一、什么是生成式人工智能
  • 终端里的AI黑魔法:OpenCode深度体验与架构揭秘
  • Java ArrayList集合和HashSet集合详解
  • 【论文笔记】【强化微调】TinyLLaVA-Video-R1:小参数模型也能视频推理
  • 人人都是音乐家?腾讯开源音乐生成大模型SongGeneration
  • 旧物回收小程序开发:开启绿色生活新方式
  • Python列表常用操作方法
  • 从语义到推荐:大语言模型(LLM)如何驱动智能选车系统?
  • 首页实现多级缓存
  • AWS-SAA 第二部份:安全性和权限管理
  • 《map和set的使用介绍》
  • Linux TCP/IP协议栈中的TCP输入处理:net/ipv4/tcp_input.c解析
  • TCP 三次握手与四次挥手全流程详解
  • 【智能体】n8n聊天获取链接后爬虫知乎
  • 设计模式精讲 Day 9:装饰器模式(Decorator Pattern)
  • 【RTP】基于mediasoup的RtpPacket的H.264打包、解包和demo 1:不含扩展
  • 2D曲线点云平滑去噪
  • 雨声_锦程_时年
  • linux生产环境下根据关键字搜索指定日志文件命令