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相当于表,内置角色有以下几种:
角色类别 | 角色名 | 能执行的操作 | 解释 |
---|---|---|---|
数据库用户角色 | read | changeStream,collStats,dbHash,dbStats,find,killCursors,listIndexes,listCollections | 允许用户读取指定数据库 |
readWrite | collStats,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的角色之和 | ||
userAdmin | changeCustomData,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