微信公众号:[前端一锅煮]
一点技术、一点思考。
问题或建议,请公众号留言。
相关命令
查看本机 mongodb 版本:mongo -version
查看本机运行的 mongodb:ps aux | grep mongodb
连接本机数据库:mongo localhost:27017
用账号密码连接本机数据库:mongo -port 27017 -u 'admin' -p 'admin_root_test'
显示数据库列表:show dbs
切换/创建数据库:use mytest
删除当前数据库:db.dropDatabase()
创建集合:db.createCollection('book')
显示当前所有用户:show users
删除用户:db.dropUser('myread')
杀死运行的 mongodb:kill pid
只读权限设置
- 启动 mongodb 服务
mac:mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork
linux:systemctl start mongod
或 service mongod start
- 进入命令
mongo localhost:27017
- 创建管理员账号
use admin
db.createUser({user:'admin', pwd:'admin_root_test',roles:[{ role: 'root', db: 'admin' }]})
- 关闭 mongodb
db.adminCommand( { shutdown: 1 } )
或者
ps -ef | grep mongodb // 查看 momgodb pid
kill pid
- 用权限认证重开
mongod --auth --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork
或者
vi /etc/mongod.conf
security:
authorization: enabled
- 再次进入命令
mongo -port 27017 -u 'admin' -p 'admin_root_test'
- 创建只读用户
use mytest // 创建数据库
db.createCollection('book') // 创建集合,以方便 show dbs 能显示数据库
db.createUser({ user: 'myread', pwd: 'myread_pwd', roles: [{ role: 'read', db: 'mytest' }] })
角色权限解读
Built-In Roles(内置角色):
- 数据库用户角色:read、readWrite。
- 数据库管理角色:dbAdmin、dbOwner、userAdmin。
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager。
- 备份恢复角色:backup、restore。
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase。
- 超级用户角色:root 还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)。
- 内部角色:__system。
具体角色:
- Read:允许用户读取指定数据库。
- readWrite:允许用户读写指定数据库。
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问。
- userAdmin:允许用户向 system.users 集合写入,可以找指定数据库里创建、删除和管理用户。
- clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限。
- readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限。
- userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限。
- dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。
- root:只在 admi n数据库中可用。超级账号,超级权限。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。