MongoDB的安全验证
1. mongodb创建用户角色及开启验证
先启动单例的mongodb
[root@service ~]# mongod -f mongodb.conf
以配置的方式启动
配置文件如下
systemlog: #mongodb发送所有日志输出的目标指定为文件 destination: file #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径 path: "/home/log/mongod.log" #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。 logappend: true storage: #mongod实例存储其数据的目录。storage.dbpath设置仅适用于mongod。 dbpath: "/home/data" journal: #启用或禁用持久性日志以确保数据文件保持有效和可恢复。 enabled: true processmanagement: #启用在后台运行mongos或mongod进程的守护进程模式。 fork: true #指定用于保存mongos或mongod进程的进程id的文件位置,其中mongos或mongod将写入其pid pidfilepath: "/home/log/mongod.pid" net: #服务实例绑定所有ip,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip #bindipall: true #服务实例绑定的ip 注意ip必须存在否启动不了mongodb bindip: localhost,192.168.85.154 #bindip #绑定的端口 port: 27017
mongodb的用户在admin数据库中的user集合中,初始化时,没有这个user集合
切换到admin库
> use admin
创建系统超级用户 myroot,设置密码123456,设置角色root 【负责管理用户】
添加用户执行在开启权限之前(添加权认证授配置),不然进去客户端无法验证,添加不了用户
下面是指定数据库
> db.createuser({user:"myroot",pwd:"123456",roles:[ { "role" : "root", "db" : "admin" } ]})
或 (这个是没有设置数据库权限的)
> db.createuser({user:"myroot",pwd:"123456",roles:["root"]})
创建专门用来管理admin库的账号myadmin,只用来作为用户权限的管理
> db.createuser({user:"czx",pwd:"123456",roles: [{role:"useradminanydatabase",db:"admin"}]})
修改配置开启验证(在配置文件添加授权认证 配置)
授权认证(注意格式,类似于springboot的yml配置的格式)
security: #开启授权认证 authorization: enabled
验证命令:(用来设置验证,也可以用来执行验证)
需要切换到admin数据库进行验证
这里的用户名和密码是进行权限验证读写数据库数据的
>db.auth("用户名","密码")
客户端重新连接时,需要验证用户名和密码,否则查看不到数据库和集合
【注意:验证失败时,需要切换数据库,比如切换到admin】
查看用户
进入客户端需要切换到admin数据库进行权限验证才能读写数据
删除用户( myroot:用户名 )
> db.dropuser("myroot")
2. spring data连接
使用用户名和密码连接到 mongodb 服务器,你必须使用'username:password@hostname/dbname' 格式,'username'为用户名,'password' 为密码。 目标:使用用户czx使用密码 123456 连接到mongodb 服务上。
配置文件如下
application.yml:
spring: #数据源配置 data: mongodb: # 主机地址 host: 180.76.159.126 # 数据库 database: articledb # 默认端口是27017 port: 27017 #帐号 username: ckf_user #密码 password: 123456
yml配置,单例配置 本地把ip改成hocalhost
spring: data: mongodb: uri: mongodb://ckf_user:123456@192.168.85.154:27017/attend_db
先切换admin数据库登录获取权限 再切换到需要权限的数据库(项目的数据库)执行添加用户,设置用户名和密码(read:读)下面的用户名对应着yml配置的用户名
添加用户如下(给数据库获取)
>db.createuser({user:"ckf_user",pwd:"123456",roles:[{role:"readwrite",db:"test"},{role:"readwrite",db:"attend_db"},'read']})
不足的地方请多多指教哦
推荐阅读
-
163邮箱网盘怎么加密?163邮箱网盘加安全锁的方法
-
安装MSDE2000提示为了安全起见,要求使用强 SA 密码的解决方法
-
简单的js表单验证函数
-
如何关闭打开文件时提示的安全警告?打开文件安全警告取消四大方法详解
-
Android开发笔记之:如何安全中止一个自定义线程Thread的方法
-
jQuery使用正则验证15/18身份证的方法示例
-
VisualStudio网页怎么设计验证用户名和密码的功能?
-
edius安全区是什么? edius安全框的使用方法
-
Win10怎么关闭Windows安全警报?Win10关闭Windows安全警报的方法
-
用Laravel Sms实现laravel短信验证码的发送的实现