管理数据库
与传统的数据库引擎类似,您也可以在Milvus中创建数据库,并为特定用户分配权限来管理它们。然后这些用户有权管理数据库中的集合。Milvus集群支持最多64个数据库。
创建数据库
要创建数据库,您需要首先连接到Milvus集群,并准备一个名称:
from pymilvus import connections, db
conn = connections.connect(host="127.0.0.1", port=19530)
database = db.create_database("book")
使用数据库
Milvus集群附带了一个默认数据库,名为”default”。除非另有指定,否则集合将在默认数据库中创建。
要更改默认数据库,请按照以下步骤操作:
db.using_database("book")
您还可以在连接到Milvus集群时设置要使用的数据库,示例如下:
conn = connections.connect(
host="127.0.0.1",
port="19530",
db_name="default"
)
列出数据库
要查找Milvus集群中所有现有的数据库,请按照以下步骤操作:
db.list_database()
['default', 'book']
删除数据库
要删除数据库,您必须先删除其所有集合。否则,删除将失败。
db.drop_database("book")
db.list_database()
['default']
使用数据库的RBAC
RBAC也涵盖了数据库操作,并确保向前兼容性。在Permission API(Grant / Revoke / List Grant)中,database一词具有以下含义:
- 如果Milvus连接和Permission API调用都没有指定
db_name
,则database指代默认数据库。 - 如果Milvus连接指定了
db_name
,但之后的Permission API调用没有指定,database指代在Milvus连接中指定名称的数据库。 - 如果在Milvus连接上进行了Permission API调用,无论是否指定了
db_name
,database指代在Permission API调用中指定名称的数据库。
以下代码片段在下面列出的块之间共享。
from pymilvus import connections, Role
_HOST = '127.0.0.1'
_PORT = '19530'
_ROOT = "root"
_ROOT_PASSWORD = "Milvus"
_ROLE_NAME = "test_role"
_PRIVILEGE_INSERT = "插入"
def connect_to_milvus(db_name="default"):
print(f"连接到Milvus\n")
connections.connect(host=_HOST, port=_PORT, user=_ROOT, password=_ROOT_PASSWORD, db_name=db_name)
- 如果Milvus连接和Permission API调用都没有指定
db_name
,则database指代默认数据库。
connect_to_milvus()
role = Role(_ROLE_NAME)
role.create()
connect_to_milvus()
role.grant("Collection", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Collection", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- 如果Milvus连接指定了
db_name
,但之后的Permission API调用没有指定,database指代在Milvus连接中指定名称的数据库。
connect_to_milvus(db_name="foo")
role.grant("Collection", "*", _PRIVILEGE_INSERT)
print(role.list_grants())
print(role.list_grant("Collection", "*"))
role.revoke("Global", "*", _PRIVILEGE_INSERT)
- 如果在Milvus连接上进行了Permission API调用,无论是否指定了
db_name
,database指代在Permission API调用中指定名称的数据库。
db_name = "foo"
connect_to_milvus()
role.grant("Collection", "*", _PRIVILEGE_INSERT, db_name=db_name)
print(role.list_grants(db_name=db_name))
print(role.list_grant("Collection", "*", db_name=db_name))
role.revoke("Global", "*", _PRIVILEGE_INSERT, db_name=db_name)