欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MongoDB 设置参数

程序员文章站 2024-01-27 10:16:28
服务器配置文件分析 bin目录下的mongod.cfg是服务器的配置文件,文件中主要的配置参数: 1、数据库文件的存放位置 2、服务器日志文件的存放位置 3、默认的IP地址、端口号 设置密码 默认情况下,MongoDB的服务器地址是127.0.0.1,端口号是27017,存储数据库管理员信息的adm ......

 

服务器配置文件分析

bin目录下的mongod.cfg是服务器的配置文件,文件中主要的配置参数:

1、数据库文件的存放位置

MongoDB  设置参数

 

 

2、服务器日志文件的存放位置

MongoDB  设置参数

 

 

3、默认的ip地址、端口号

MongoDB  设置参数

 

 

 

 

设置密码

默认情况下,mongodb的服务器地址是127.0.0.1,端口号是27017,存储数据库管理员信息的admin数据库是空的,即没有管理员账户,任何客户端可以直接连接服务器,不需要认证。

好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。坏处是,所有人都可以直接访问并修改数据库数据。

 

1、使用admin数据库,创建一个管理员账户

use admin
db.createuser({user:"chy",pwd:"abc",roles:[{role:"useradminanydatabase",db:"admin"}]})

会提示创建成功。role指定账户角色(权限),db指定此账户管理的是哪个db。因为是roles:[],数组,所以可同时设置多个role。

如果是role中带有anydatabase,则可管理所有数据库。

如果role中不带anydatabase,则只能管理指定的db。

不管是哪种,这个账户只能进入指定的db。比如权限指定为"useradminanydatabase",db指定为"admin",此账户只能通过数据库admin的验证,不能通过其他数据库的验证。要进入admin数据库后,在admin数据库中管理所有数据库。

"useradminanydatabase"是管理所有数据库,可进行删除某个数据库之类的操作,是管理,并不能对某个数据库进行读写。

 

 

mongodb的内置role

    1. 数据库用户角色:read、readwrite;
    2. 数据库管理角色:dbadmin、dbowner、useradmin;
    3. 集群管理角色:clusteradmin、clustermanager、clustermonitor、hostmanager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readanydatabase、readwriteanydatabase、useradminanydatabase、dbadminanydatabase
    6. 超级用户角色:root  
    7. 内部角色:__system

 

 

2、修改配置文件mongod.cfg,使用密码。

MongoDB  设置参数

我们看到默认是注释了的,不使用安全验证。

取消注释,修改如下:

MongoDB  设置参数

注意空格、缩进,authorization冒号后面有一个空格。

security:
  authorization: enabled

 

3、重启mongodb服务。

 

4、 

exit    //先退出客户端

 mongo     

 use admin 

 db.auth("username","password")    //验证密码。1表示通过验证,0表示不通过。

 

 

 

 

刚才创建的账户可进入所有db。可创建某个db的账户。

db.createuser({user:'chy1',pwd:'abc1',roles:[{role:'readwrite',db:'test'}]})

读写权限,此账户只能操作数据库test,且只能对test进行读写。

创建好之后就可以使用  mongodb://username:password@host[:port]/database  进行连接了(需要先  mongo  进入客户端 )。

 

 

注意:

  • mongodb系统的最高权限是root,根权限
  • 某个数据库的最高权限是dbowner,数据库所有者,可创建索引、进行读写等操作。
  • mongodb的数据库是相互独立的,每个数据库都有单独的密码、权限,互不通用。
  • 给某个数据库创建账号,必须限use进入该数据库,然后db.createuser(),要指定roles中的db为该数据库。是在该数据库中创建该数据库的账号,不是说都是在admin数据库中创建账号。在admin数据库中创建的账号只能用于admin数据库的验证,不能用于其他数据库的验证。
  • 可以用db.auth("username","pwd")  验证账户,1表示通过,0表示不通过。