分享程序网
首页
  • java
微服务
微前端
环境搭建
数据库
设计模式
算法
软件
解决问题
链接
首页
  • java
微服务
微前端
环境搭建
数据库
设计模式
算法
软件
解决问题
链接
  • 关系型数据库

    • MySQL
    • PostgreSQL
  • 非关系型数据库

    • Redis
    • MongoDB

MongoDB

Docker安装MongoDB

拉取镜像

docker pull mongo

运行MongoDB

docker run -itd --name mongo -p 27017:27017 mongo --auth

--auth:需要密码才能访问容器服务(注意:安全问题,MongoDB默认是不开启权限验证的,不过设置了这里就相当于修改MongoDB的配置auth=ture启用权限访问)。

创建mongodb数据持久化目录

mkdir -p /data/mongodb/data
docker run -itd --name mongo -v /data/mongodb/data:/data/db -p 27017:27017 mongo --auth

进入创建的MongoDB容器

# mongodb5.0以上版本为 docker exec -it mongo mongosh admin
docker exec -it mongo mongo admin

不适用用户登录删除最后的admin

docker exec -it mongo mongo
# 然后使用admin的切换
use admin
# 在system数据库创建一个名为 root,密码为 123456 的用户。
# db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'system'},"readWriteAnyDatabase"]});
#db.createUser({user: 'root',pwd: '123456',roles: [{ role: 'readWrite', db: 'system' }]})
# 创建一个超级用户 
db.createUser( { user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}] } );

#授权登录
db.auth('root','123456')

命令

用户管理命令

方法名描述
db.getUsers()获取用户信息
db.dropAllUsers()删除所有用户
db.updateUser()修改用户信息
db.createUser()创建用户
db.revokeRolesFromUser()删除用户角色
db.removeUser()删除用户(已经废弃)
db.grantRolesToUser()授予用户角色
db.getUser()查看指定用户信息
db.changeUserPassword()修改用户密码
db.auth()数据库认证、安全模式
db.dropUser()删除用户

mongodb中database相当于数据库schema,collection相当于表,内置角色有以下几种:

角色类别角色名能执行的操作解释
数据库用户角色readchangeStream,collStats,dbHash,dbStats,find,killCursors,listIndexes,listCollections允许用户读取指定数据库
readWritecollStats,convertToCapped,createCollection,
dbHash,dbStats,dropCollection,createIndex,dropIndex,
find,insert,killCursors,listIndexes,listCollections,remove,
renameCollectionSameDB,update
允许用户读写指定数据库
数据库管理角色dbAdmin系统权限:changeStream,collStats,convertToCapped,createCollection,dbHash,dbStats,dropCollection,find, killCursors,listIndexes,listCollections,planCacheRead 数据库权限:bypassDocumentValidation,collMod,collStats,convertToCapped,createCollection,createIndex,dbStats,dropCollection,dropDatabase,dropIndex,enableProfiler,listIndexes,listCollections,planCacheIndexFilter,planCacheRead,planCacheWrite,reIndex,renameCollectionSameDB,storageDetails,validate允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
dbOwner实际是readWrite, dbAdmin和userAdmin的角色之和
userAdminchangeCustomData,changePassword,createRole,createUser,
dropRole,dropUser,grantRole,revokeRole, setAuthenticationRestriction,
viewRole,viewUser
允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
集群管理角色clusterAdmin整个集群上:addShard,appendOplogNote,applicationMessage,
cleanupOrphaned,flushRouterConfig,listSessions(版本3.6中的新功能),
listShards,removeShard,replSetConfigure,replSetGetConfig,
replSetGetStatus,replSetStateChange,resync,setFeatureCompatibilityVersion,
setFreeMonitoring
所有数据库:clearJumboFlag (4.2.3和4.0.15中的新功能),
enableSharding,moveChunk,splitChunk,splitVectorconfig
库的非系统集合:collStats,dbHash,dbStats,enableSharding,
find,insert,killCursors,listCollections,listIndexes,moveChunk,
planCacheRead,remove,splitChunk,splitVector,updateconfig
库的系统集合:collStats,dbHash,dbStats,find,killCursors,
listCollections,listIndexes,planCacheReadlocal
库的非系统集合:enableSharding,insert,moveChunk,remove,
splitChunk,splitVector,updatelocal
库的系统集合:collStats,dbHash,dbStats,find,killCursors,listCollections,
listIndexes,planCacheRead
只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
clusterManager整个集群上:checkFreeMonitoringStatus (版本4.0中的新增功能),
connPoolStats,getCmdLineOpts,getLog,getParameter,
getShardMap,hostInfo,inprog,listDatabases,
listSessions (版本3.6中的新功能),listShards,netstat,
replSetGetConfig,replSetGetStatus,serverStatus,
setFreeMonitoring (版本4.0中的新增功能),
shardingState,top
所有数据库:collStats,dbStats,getShardVersion,indexStats,
useUUID(版本3.6中的新功能)
config库的非系统集合:collStats,dbHash,dbStats,find,
getShardVersion,indexStats,killCursors,listCollections,
listIndexes,planCacheReadconfig
库的系统集合:collStats,dbHash,dbStats,find,killCursors,
listCollections,listIndexes,planCacheRead
clusterMoniter
hostManager
备份恢复角色backup
store
所有数据库角色readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
超级用户角色root只在admin数据库中可用。超级账号,超级权限
内部角色__system

MongoDB可视化客户端地址:

https://www.mongodb.com/try/download/compass
Last Updated:
Contributors: chengli
Prev
Redis