验证用户名和密码
给错误的密码
> db admin > db.auth("tom","admin") Error: Authentication failed. 0 >
给正确的密码
> db admin > db.auth("tom","123456") 1 >
创建一个普通用户
> use testdb switched to db testdb > db.createUser({user:"test",pwd:"admin",roles:[{role:"readWrite",db:"testdb"}]}) Successfully added user: { "user" : "test", "roles" : [ { "role" : "readWrite", "db" : "testdb" } ] } > db.getUsers() [ { "_id" : "testdb.test", "userId" : UUID("95ecb34c-46f4-44fa-8948-4f0875499d8e"), "user" : "test", "db" : "testdb", "roles" : [ { "role" : "readWrite", "db" : "testdb" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } ] >
提示:以上就创建了一个名为test的用户,它可对testdb这个库下的所有collection做读写操作;
创建一个多角色的用户
> db testdb > db.createUser( ... { ... user:"jerry1", ... pwd:"admin123.com", ... roles:[ ... {role:"clusterAdmin",db:"admin"}, ... {role:"readWrite",db:"testdb"}, ... {role:"read",db:"testdb1"} ... ] ... }) Successfully added user: { "user" : "jerry1", "roles" : [ { "role" : "clusterAdmin", "db" : "admin" }, { "role" : "readWrite", "db" : "testdb" }, { "role" : "read", "db" : "testdb1" } ] } > db.getUsers() [ { "_id" : "testdb.jerry1", "userId" : UUID("43d66bf8-1e3a-4c14-ad73-5961b5a7660f"), "user" : "jerry1", "db" : "testdb", "roles" : [ { "role" : "clusterAdmin", "db" : "admin" }, { "role" : "readWrite", "db" : "testdb" }, { "role" : "read", "db" : "testdb1" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }, { "_id" : "testdb.test", "userId" : UUID("95ecb34c-46f4-44fa-8948-4f0875499d8e"), "user" : "test", "db" : "testdb", "roles" : [ { "role" : "readWrite", "db" : "testdb" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } ] >
提示:在mongodb中一个用户可以授权拥有多个角色权限;
开启mongodb服务端访问控制配置
重启服务
[root@node12 ~]# systemctl restart mongod.service [root@node12 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 *:27017 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* [root@node12 ~]#
测试:现在连接mongodb,看看会发生什么?
[root@node12 ~]# mongo MongoDB shell version v4.4.1 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("68fa2f83-64a4-42c2-8d64-9ee73a77e883") } MongoDB server version: 4.4.1 > show dbs > db test > show tables Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus >
提示:现在我们直接连接mongodb是可以正常连接,但是我们没法查看数据列表以及collections了;这个时候我们就需要进行用户认证了;
认证用户
> db test > db.auth("test","admin") Error: Authentication failed. 0 > use testdb switched to db testdb > db.auth("test","admin") 1 > show dbs > show collections >
提示:认证用户必须切换到对应的数据库下做认证;我这里test用户只能对testdb库下的所有collection进行读写,所以认证以后,我们在使用 show dbs命令就看不到系统admin和config库了;除了上述连接数据库以后使用db.auth()做用户认证,我们也可直接在连接数据库时指定用户名和密码,如下
[root@node12 ~]# mongo -utest -padmin testdb MongoDB shell version v4.4.1 connecting to: mongodb://127.0.0.1:27017/testdb?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("60c43e94-04c6-46f4-be07-07ca8fa06b2f") } MongoDB server version: 4.4.1 > show dbs > exit bye [root@node12 ~]# mongo -utest -padmin 192.168.0.52:27017/testdb MongoDB shell version v4.4.1 connecting to: mongodb://192.168.0.52:27017/testdb?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("a30dbd64-7b59-4a8e-b95d-02ff30e256f3") } MongoDB server version: 4.4.1 > show dbs > show tables >
以上就是在mongodb中开启访问控制,创建用户,授权的操作;我们只需要在配置文件中指定开启认证功能,然后使用具有创建用户权限的用户登录数据库创建用户授权即可;
到此这篇关于分布式文档存储数据库之MongoDB访问控制的操作方法的文章就介绍到这了,更多相关MongoDB访问控制内容请搜索