使用手册

https://www.runoob.com/mongodb/mongodb-window-install.html

https://www.runoob.com/docker/docker-install-mongodb.html

https://blog.csdn.net/weixin_42388485/article/details/112438174

常用语句

https://www.csdn.net/tags/OtTaAgwsNzcxNzYtYmxvZwO0O0OO0O0O.html

https://www.runoob.com/mongodb/mongodb-tutorial.html

https://www.runoob.com/mongodb/mongodb-create-database.html


mongo -port 27017

show dbs

官网下载

https://www.mongodb.com/download-center/community

下一步安装 “install mongoDB compass” 不勾选(当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,我们可以在后面自己到官网下载安装,下载地址

客户端

https://www.mongodb.com/download-center/compass

绿色版本安装

https://blog.csdn.net/qq_40975034/article/details/86636738

客户端

https://www.mongodb.com/download-center/compass

绿色版本安装

https://blog.csdn.net/qq_40975034/article/details/86636738

安装 MongoDB服务

通过执行mongod.exe,使用–install选项来安装服务,使用–config选项来指定之前创建的配置文件。

C:\mongodb\bin\mongod.exe –config “C:\mongodb\mongod.cfg” –install

C:\Program Files\MongoDB\Server\4.4\bin\mongod.exe –config “C:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg” –install

要使用备用 dbpath,可以在配置文件(例如:C:\mongodb\mongod.cfg)或命令行中通过 –dbpath 选项指定。

如果需要,您可以安装 mongod.exe 或 mongos.exe 的多个实例的服务。只需要通过使用 –serviceName 和 –serviceDisplayName 指定不同的实例名。只有当存在足够的系统资源和系统的设计需要这么做。

启动MongoDB服务

net start MongoDB

关闭MongoDB服务

net stop MongoDB

移除 MongoDB 服务

C:\mongodb\bin\mongod.exe –remove

安装成功

http://127.0.0.1:27017/

创建用户

Q:Exception authenticating MongoCredential{mechanism=null, userName='root', source='admin', password=<hidden>, mechanismProperties={}}

1.打开mongoDB数据库,并进入xiaomu数据库

use xiaomu

2.添加一个用户

db.createUser(
     {undefined
       user: "wenqiang",
       pwd: "1438438",
       roles: ["readWrite"]
     }
)

3.登录用户,并测试是否好用

db.auth("mutianwei", "123568")

db.createCollection("logs")

db.logs.insert( { name: "wangwenqiang", age: 3} )

db.logs.find()

docker mongodb

https://www.runoob.com/docker/docker-install-mongodb.html

docKer操作 mongodb

https://blog.csdn.net/clover661/article/details/123037297

  1. docker安装
[root@adscom ~]# docker pull mongo
  1. 查看docker镜像,看MongoDB镜像是否拉取成功
[root@adscom ~]# docker images
mongo                                        latest              dfda7a2cf273   2 months ago    693MB
  1. 启动docker并查看状态
[root@adscom ~]# systemctl start docker.service 
[root@adscom ~]# systemctl status docker.service 
  1. 创建并启动容器,不指定用户名和密码
[root@adscom ~]# docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo
a3fbac6a6a32caf45dff2f180b61e7815b8e72296b330ebef9260c6963615276

该-v /my/own/datadir:/data/db命令的一部分将/my/own/datadir目录从底层主机系统挂载/data/db到容器内部,默认情况下 MongoDB 将在其中写入其数据文件。
  1. 进入容器
 [root@adscom ~]# docker exec -it a3fbac6a6a32 /bin/bash
root@a3fbac6a6a32:/# 
  1. 输入MongoDB连接MongoDB数据库
root@a3fbac6a6a32:/# mongo
  1. 创建root账户

    > use admin;
    switched to db admin
    > db.createUser(
    ... {
    ... user: "root",
    ... pwd: "root",
    ... roles: [ { role: "root",db: "admin" } ]
    ... }
    ... );
    Successfully added user: {
     "user" : "root",
     "roles" : [
         {
             "role" : "root",
             "db" : "admin"
         }
     ]
    }
  2. 退出重新连接


exit 
docker exec -it +容器ID bash
mongo -u root -p root admin

如果要为某个数据库创建普通用户

use test
db.createUser(
{
user: "testuser",
pwd: "password",
roles: [
{ role: "readWrite", db: "test" }
]
}
);
use admin

show users >>查看当前库内已有用户

show roles >>查看当前库内可用的roles,默认只有built-in roles

db.createUser({user: “root”,pwd: “root”,roles: [ { role: “root”, db:
“admin” } ]}) >>创建用户,roles可以使用当前库内的角色,或者其他库内的角色

db.changeUserPassword(‘root’,‘rootNew’); >>如何修改密码

db.grantRolesToUser(’’, [{ role: ‘’, db:
‘admin’ }])
db.revokeRolesFromUser( “”, [{ role: ‘’, db:
‘admin’ }]) >>已有用户新增和解除built-in roles

use db_name db.dropUser("") >> 删除用户命令如下,虽然所有库的用户信息全存在admin的system.users中,删用户时还是要use <库名>才能删除

创建用户时需要牢记的几点:
创建用户必须指定库名,即用户是和库绑定的。即便是超级用户的创建也是如此,如果你创建root用户时是在业务库里,那你以后登录root也只能指定业务库的库名了(超级账户一般建于admin库下)。
创建用户时指定的built-in roles也是与库绑定的,指定的哪个库的角色,就拥有哪个库的操作权限,即在test库内创建db.createUser({user: “test”,pwd: “test”,roles: [ { role: “read”, db: “test1” } ]})只能读test1下的collection不能读test下的。
不同的库下可以存在相同的用户名,即admin.root用户和test.root用户是可以同时存在的。
登陆mongo shell时如果不指定库名,默认登入的test库(只在3.6验证过,其他版本自行验证),你需要use db_name后才能进行db.auth(),当然你可以选择直接mongo db_name -u username -p password登陆。
一般来说创建一个root角色的超级用户root即可(或一个__system权限的system用户),创建一些普通权限的用户做日常操作。

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)
//这里第二个role是reporting.read,说明此用户拥有reporting下的读权限。
use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)
//未指定db的role默认是使用当前库下的角色的,这里其实readWriteAnyDatabase相当于{ role: "readWriteAnyDatabase", db: "admin" }

权限详解:

  1. read

提供本库下所有非系统collection的读权限,以及少数几个系统collection的读权限,例如system.indexes, system.js, and system.namespaces

  1. readWrite
    提供本库下所有非系统collection的读写权限,以及系统collection system.js的读写权限。
    Database Administration Roles:
  2. dbAdmin
    提供一些库管理的权限,诸如索引创建,增删集合,删库等等,并没有对所有集合的读权限,因此其实很少会用到。
  3. userAdmin
    提供在本库下创建用户、角色,删除用户、角色,修改密码等一系列用户相关的权限。
  4. dbOwner
    库拥有者权限,即readWrite、dbAdmin、userAdmin角色的合体。
    Cluster Administration Roles:
  5. clusterAdmin
    集群管理权限,clusterManager、clusterMonitor、hostManager角色的合体,此外再加上dropDatabase权限。
  6. clusterManager
    集群管理者权限,提供诸如添加shard,删除shard,修改副本集配置等权限。
  7. clusterMonitor
    集群监控权限,顾名思义拥有查看一系列集群状态的权限。
  8. hostManager
    参考官网链接的解释,很少使用。
    Backup and Restoration Roles:
  9. backup
    即进行数据备份的权限,实例级别的角色。
  10. restore
    即进行数据还原的权限,实例级别的角色,还包含很多与dbOwner重合的权限,参见官网中的相关解释。
    All-Database Roles:
  11. readAnyDatabase
    提供针对除了local和config库外所有其他库的读权限。
  12. readWriteAnyDatabase
    提供针对除了local和config库外所有其他库的读写权限。
    14 . userAdminAnyDatabase
    同userAdmin角色,只不过范围扩大到了所有库。
  13. dbAdminAnyDatabase
    同dbAdmin角色,只不过范围扩大到了所有库。
    Superuser Roles:
    16.root
    即超级用户的权限,拥有此权限你可以管理任意数据库,可以将此角色理解为dbOwner of All Database。
    Internal Role:
    system
    系统内置角色,拥有很高的权限(高于root),在做一些集群操作时可以使用此包含此角色的用户
    一般不推荐设置此角色的用户,使用keyfile进行internal auth的副本集之间的交互就是使用此角色的。
    一般来说应用使用的用户只需要readWrite角色即可,DBA可使用root账户和
    system账户进行诸如集群配置,备份恢复等操作
文档更新时间: 2022-04-15 21:19   作者:admin