目录
在使用 Docker Compose 安装了 Milvus 单机版(Standalone),默认情况下是没有启用安全验证(即用户认证)的。要为 Milvus 添加安全验证,需要修改配置文件 milvus.yaml,启用认证功能,并确保 Docker Compose 正确映射该配置文件。下面是具体步骤:
1. 下载Milvus配置文件
首先,你需要获取 Milvus 的配置文件 milvus.yaml,并将其放置在本地目录中。可以用以下命令下载对应版本的配置文件(这里以 v2.4.15 为例):
bash
WrapCopy
wget https://raw.githubusercontent.com/milvus-io/milvus/v2.4.15/configs/milvus.yaml
假设你将 milvus.yaml 下载到当前工作目录(与 docker-compose.yml 同一目录)。
2. 修改配置文件以启用认证
打开 milvus.yaml 文件,找到 security 部分,修改 authorizationEnabled 的值设置为 true,如下所示:
yaml
WrapCopy
security: authorizationEnabled: true # 默认是 false,改为 true 以启用认证 # 可选:指定超级用户,超级用户在重置密码时无需提供旧密码 superUsers: "root" # 默认超级用户是 root,可以根据需要修改
保存文件后,这个配置会启用 Milvus 的用户认证功能。默认情况下,Milvus 会创建一个用户名为 root,密码为 Milvus 的账户。
3. 修改Docker Compose文件以映射配置文件
为了让 Milvus 容器使用你修改后的 milvus.yaml,需要在 docker-compose.yml 中添加卷映射。编辑 docker-compose.yml,在 standalone 服务下添加以下卷配置:
yaml
WrapCopy
services: standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.4.15 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus - ./milvus.yaml:/milvus/configs/milvus.yaml # 添加这一行,映射本地 milvus.yaml ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio" # 其他服务(etcd 和 minio)保持不变
- ./milvus.yaml 是你本地的配置文件路径。
- /milvus/configs/milvus.yaml 是容器内的目标路径。
4. 重启Milvus服务
保存修改后的 docker-compose.yml,然后重启 Milvus 以应用新配置:
bash
WrapCopy
# 先停止当前运行的容器 sudo docker-compose down
# 重新启动服务 sudo docker-compose up -d
等待所有容器状态变为 (healthy),可以通过以下命令检查:
bash
WrapCopy
sudo docker-compose ps
5. 测试认证是否生效
Milvus 默认提供了一个用户 root,密码为 Milvus。你可以用 Python 的 PyMilvus 客户端测试连接:
python
WrapCopy
from pymilvus import connections # 尝试连接,需要提供用户名和密码 connections.connect( alias="default", host="localhost", port="19530", user="root", password="Milvus" )
print("连接成功!")
如果不提供用户名和密码,或者提供错误的凭据,会返回类似 UNAUTHENTICATED 的错误,表示认证已生效。
6. (可选)修改默认密码或创建新用户
为了安全起见,建议更改默认 root 用户的密码,或者创建新用户。可以用以下代码完成:
python
WrapCopy
from pymilvus import utility # 连接默认 root 用户 connections.connect( alias="default", host="localhost", port="19530", user="root", password="Milvus" )
# 修改 root 用户密码 utility.reset_password("root", "Milvus", "NewP@ssw0rd", using="default") # 创建新用户 utility.create_user("new_user", "NewP@ssw0rd", using="default") # 列出所有用户,验证是否成功 users = utility.list_usernames(using="default") print(users)
之后,你可以用新用户和新密码连接 Milvus。
注意事项
- 配置文件路径:确保 milvus.yaml 的路径在 docker-compose.yml 中正确映射。
- 密码要求:用户名和密码长度不得超过 32 个字符,用户名必须以字母开头,仅包含字母、数字或下划线。
- 重启生效:每次修改 milvus.yaml 后,都需要重启 Milvus 服务。