mongodb - 通过 ansible playbook 启用 mongo 身份验证
问题描述
我尝试在我的服务器上安装 mongodb 并启用身份验证。但我坚持为身份验证添加用户。当我尝试执行剧本时,它在添加用户任务和输出时失败:
任务执行期间发生异常。要查看完整的回溯,请使用 -vvv。错误是:pymongo.errors.OperationFailure:没有经过身份验证的用户致命:[***]:失败!=> {"changed": false, "msg": "无法连接到数据库:没有经过身份验证的用户"}
我该如何解决?
剧本.yml
- name: Install mongodb
apt:
name: mongodb-org
update_cache: yes
state: present
- name: Set config
template:
src: templates/mongodb.yml
dest: /etc/mongod.conf
notify: restart mongodb
- name: Install pymongo
pip:
name: pymongo
state: present
- name: Add user
mongodb_user:
database: "{{ mongodb_name }}"
name: "{{ mongodb_user }}"
password: "{{ mongodb_password }}"
login_host: "{{ mongodb_bind_ip }}"
login_port: "{{ mongodb_port }}"
state: present
mongodb.yml
net:
port: {{ mongodb_port }}
bindIp: {{ mongodb_bind_ip }}
unixDomainSocket:
enabled: false
security:
authorization: enabled
解决方案
如果数据库中没有管理员用户,则需要使用 disabled 启动它security.authorization
,添加管理员用户,然后使用 enabled 重新启动 mongodb security.authorization
:https ://docs.mongodb.com/manual/tutorial/enable-authentication/#procedure
之后,您可以使用管理员的凭据添加更多用户:
- name: Add user
mongodb_user:
database: "{{ mongodb_name }}"
name: "{{ mongodb_user }}"
password: "{{ mongodb_password }}"
login_host: "{{ mongodb_bind_ip }}"
login_port: "{{ mongodb_port }}"
login_user: "{{ admin_login }}"
login_password: "{{ admin_password }}"
state: present
https://docs.ansible.com/ansible/2.4/mongodb_user_module.html
推荐阅读
- alexa - 如何从 Alexa Skill 中的用户随机输入中提取自定义插槽
- ios - SwiftUI:在填充的水平图像中制作 y 偏移的永久动画
- c# - Visual Studio 2019:禁用自动格式化
- python-3.x - Python 比较两个或多个整数值并打印出较高的值,包括。变量名
- r - R如何将年份合并为时期
- javascript - 如何以 Angular 6 及更高版本将画布内容下载为 svg(.svg 扩展名)图像/文件
- r - 在R中将两个不同的数据表合并为一个
- qt - QML ListView 中具有实际价值的 z 属性的用途
- javascript - 使用字符串选项创建对象
- java - 在 Java 中将 HashMap 键值转换为 Char 数组