1.0.0 • Published 5 months ago
@zhaojiu/km-mysql v1.0.0
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
作者
彭振辉
1.0.0
5 months ago