@zhaojiu/km-mysql
v1.0.0
Published
A key management library using MySQL
Readme
km-mysql
一个基于 MySQL 的密钥管理库,提供简单而强大的密钥存储和管理功能。
功能特点
- 基于 MySQL 数据库的密钥存储
- 支持密钥的增删改查操作
- 支持密钥版本管理
- 简单易用的 API 接口
- 完整的类型支持
- 异步操作支持
安装
使用 npm 安装:
npm install km-mysql基本使用
1. 初始化连接
const KMMySQL = require('km-mysql');
const config = {
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
};
const km = new KMMySQL(config);2. 创建密钥
// 创建新密钥
await km.createKey('my-key', 'my-secret-value');
// 创建带有元数据的密钥
await km.createKey('my-key', 'my-secret-value', {
description: '这是一个测试密钥',
tags: ['test', 'demo']
});3. 获取密钥
// 获取最新版本的密钥
const key = await km.getKey('my-key');
// 获取指定版本的密钥
const keyVersion = await km.getKeyVersion('my-key', 1);4. 更新密钥
// 更新密钥值(自动创建新版本)
await km.updateKey('my-key', 'new-secret-value');
// 更新密钥元数据
await km.updateKeyMetadata('my-key', {
description: '更新后的描述',
tags: ['updated', 'test']
});5. 删除密钥
// 删除密钥(包括所有版本)
await km.deleteKey('my-key');
// 删除指定版本的密钥
await km.deleteKeyVersion('my-key', 1);6. 列出密钥
// 获取所有密钥
const keys = await km.listKeys();
// 获取密钥的所有版本
const versions = await km.listKeyVersions('my-key');高级用法
标签和元数据
您可以为密钥添加标签和元数据,以便更好地组织和管理:
// 创建带有标签和元数据的密钥
await km.createKey('api-key', 'secret-value', {
description: 'API访问密钥',
tags: ['api', 'production'],
metadata: {
environment: 'production',
team: 'backend',
expiry: '2024-12-31'
}
});
// 按标签搜索密钥
const apiKeys = await km.findKeysByTag('api');版本管理
km-mysql 提供了内置的版本管理功能:
// 获取所有版本
const versions = await km.listKeyVersions('my-key');
// 获取特定版本
const version2 = await km.getKeyVersion('my-key', 2);
// 回滚到特定版本
await km.rollbackToVersion('my-key', 2);错误处理
km-mysql 使用标准的错误处理机制:
try {
await km.getKey('non-existent-key');
} catch (error) {
if (error.code === 'KEY_NOT_FOUND') {
console.error('密钥不存在');
} else {
console.error('发生错误:', error);
}
}API 参考
主要方法
createKey(keyName, value, options?): 创建新密钥getKey(keyName): 获取密钥的最新版本getKeyVersion(keyName, version): 获取特定版本的密钥updateKey(keyName, newValue): 更新密钥值updateKeyMetadata(keyName, metadata): 更新密钥元数据deleteKey(keyName): 删除密钥deleteKeyVersion(keyName, version): 删除特定版本的密钥listKeys(): 列出所有密钥listKeyVersions(keyName): 列出密钥的所有版本findKeysByTag(tag): 按标签搜索密钥
配置选项
{
host: string; // MySQL 主机地址
user: string; // 用户名
password: string; // 密码
database: string; // 数据库名
port?: number; // 端口号(默认:3306)
connectionLimit?: number; // 连接池大小(默认:10)
}许可证
MIT
作者
彭振辉
