MongoDB数据库授权认证的实现
程序员文章站
2022-06-10 08:01:49
目录1.与用户相关的命令2.配置mongodb登陆授权认证2.1.创建一个用户2.2.修改配置文件启用用户认证2.3.重启mongodb2.4.使用口令登陆mongodb3.授权用户并赋予多个权限3....
1.与用户相关的命令
- db.auth() 将用户验证到数据库。
- db.changeuserpassword() 更改现有用户的密码。
- db.createuser() 创建一个新用户。
- db.dropuser() 删除单个用户。
- db.dropallusers() 删除与数据库关联的所有用户。
- db.getuser() 返回有关指定用户的信息。
- db.getusers() 返回有关与数据库关联的所有用户的信息。
- db.grantrolestouser() 授予用户角色及其特权。
- db.removeuser() 已过时。从数据库中删除用户。
- db.revokerolesfromuser() 从用户中删除角色。
- db.updateuser() 更新用户数据。
2.配置mongodb登陆授权认证
2.1.创建一个用户
> use admin > db.createuser( { user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" } ] //指定角色为root,表示管理员 } > db.getusers()
2.2.修改配置文件启用用户认证
[mongo@mongodb-1 ~]$ vim /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml security: authorization: enabled
2.3.重启mongodb
[mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown killing process with pid: 17899 [mongo@mongodb-1 ~]$ mongod -f /data/mongodb_cluster/mongodb_27017/conf/mongodb.yml about to fork child process, waiting until server is ready for connections. forked process: 18511 child process started successfully, parent exiting
2.4.使用口令登陆mongodb
[mongo@mongodb-1 ~]$ mongo -uadmin -p123456 mongodb shell version v4.0.14 connecting to: mongodb://127.0.0.1:27017/?gssapiservicename=mongodb implicit session: session { "id" : uuid("ae65176e-ac6b-4906-b621-496996381417") } mongodb server version: 4.0.14 > show dbs
使用口令登陆后会发现最后一个警告信息也会消失
3.授权用户并赋予多个权限
mongodb可以创建多个用户并针对不同的库进行不同的操作
3.1.创建用户并制造数据
1.创建用户 [mongo@mongodb-1 ~]$ mongo -uadmin -p123456 > db.createuser( ... { ... user: "mytest", ... pwd: "123456", ... roles: [ { role: "readwrite", db: "test" }, //可读可写 ... { role: "read", db: "test2" } ] //可读 ... } ... ) 2.插入数据 test库 > use test > db.test.insert({"name":"xiaoming","age":10}) > db.test.insert({"name":"xiaohong","age":10}) > db.test.insert({"name":"xiaolan","age":10}) test2库 > use test2 > db.test2.insert({"name":"jiangxl","job":"it","age":"99"}) > db.test2.insert({"name":"wanger","job":"it","age":"99"})
3.2.使用mytest登录test库验证权限
1.登录mytest用户并连接到tets库 [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test 2.查看所有表 > show tables hash test 3.查看是否有读权限 > db.test.find() { "_id" : objectid("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 } { "_id" : objectid("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 } { "_id" : objectid("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 } 4.查看是否有写入权限 > db.test.insert({"name":"xiaozhang","age":10}) 5.查看是否写入成功 > db.test.find() { "_id" : objectid("602c73b5d9d09b9b700c9eb2"), "name" : "xiaoming", "age" : 10 } { "_id" : objectid("602c73bdd9d09b9b700c9eb3"), "name" : "xiaohong", "age" : 10 } { "_id" : objectid("602c73c1d9d09b9b700c9eb4"), "name" : "xiaolan", "age" : 10 } { "_id" : objectid("602c74f949b9d3f400ed866b"), "name" : "xiaozhang", "age" : 10 }
可读可写
3.3.使用mytest登录test2库验证权限
由于普通用户只能登录test库因此想要切换其他库,只能是登陆test库后使用use进行切换
1.登录test库 [mongo@mongodb-1 ~]$ mongo -umytest -p123456 192.168.81.210:27017/test 2.切换到tets2库 > use test2 3.查看表 > show tables test2 4.查看表中数据 > db.test2.find() 5.插入一条数据,查看是否插入成功 > db.test2.insert({"name":"xiaozi","job":"it","age":"99"}) writecommanderror({ "ok" : 0, "errmsg" : "not authorized on test2 to execute command { insert: \"test2\", ordered: true, lsid: { id: uuid(\"6203f7df-d8f8-4880-aab3-4db712ae785f\") }, $db: \"test2\" }", "code" : 13, "codename" : "unauthorized" })
可以看到只能读取,不能插入
到此这篇关于mongodb数据库授权认证的实现的文章就介绍到这了,更多相关mongodb数据库授权认证内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
下一篇: Centos8环境下修改ssh端口号方法
推荐阅读
-
使用MongoDB和JSP实现一个简单的购物车系统实例
-
使用phonegap操作数据库的实现方法
-
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
-
Python使用htpasswd实现基本认证授权的例子
-
Android编程实现将压缩数据库文件拷贝到安装目录的方法
-
webpack4+express+mongodb+vue实现增删改查的示例
-
中标麒麟OS与华为GaussDB数据库实现兼容互认证
-
Spring Boot Security OAuth2 实现支持JWT令牌的授权服务器
-
重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现
-
Yii框架实现对数据库的CURD操作示例