MongoDB服务配置系列问题

MongoDB服务配置系列问题

通过配置文件配置服务:

dbpath=F:\Program\DATA\Mongo\db #数据存储路径
logpath=F:\Program\DATA\Mongo\logs\mongo.log #日志存储路劲
logappend=true #日志写入方式:追加
port=27017 #端口
#auth=true #是否认证
bind_ip=0.0.0.0 
serviceName = MongoDB #服务名称
serviceDisplayName = MongoDB

1、安装配置文件:

在mongdb的bin目录下在 cmd 中以管理员身份执行以下命令:

mongod --install -f F:\Program\DATA\Mongo\mongodb.conf 

执行此命令后在 ‘此电脑–管理–服务和应用程序–服务’中可以看到服务名称MongoDB。

2、关闭、启动、删除服务:

net stop MongoDB #停止一个服务
net start MongoDB #开启一个服务
sc delete MongoDB #删除一个服务 sc delete "服务名"  (如果服务名中间有空格,就需要前后加引号)

开启或关闭用户名和密码登陆:

auth = true 或者 auth = false 说的是连接数据库是否需要密码验证,对应用户名和密码。

下面说一说如何开启密码验证:

admin数据库是管理员数据库,记录用户信息,我们需要先在这个数据库中创建一个管理员用户。然后通过这个管理员用户在其他数据库下添加、修改或者删除那个数据库的用户。

use admin
db.createUser(
... ...   {
... ...     user: "****",
... ...     pwd: "****",
... ...     roles: [ { role: "root", db: "admin" } ] #'root'拥有最高权限。
... ...   }
... ... )

关闭服务:

net stop MongoDB 

修改配置文件:

dbpath=F:\Program\DATA\Mongo\db #数据存储路径
logpath=F:\Program\DATA\Mongo\logs\mongo.log #日志存储路劲
logappend=true #日志写入方式:追加
port=27017 #端口
auth=true #把false 改成 true
bind_ip=0.0.0.0 
serviceName = MongoDB #服务名称
serviceDisplayName = MongoDB

重新安装配置文件:

mongod --install -f F:\Program\DATA\Mongo\mongodb.conf

这个时候,进入到数据库进行操作的时候,发现没有相应权限,下一步登陆。

use admin
db.auth('username','password')
use test1 #切换到数据库test1
#为test1创建一个用户
db.createUser(
...     {
...       user: "testuser",
...       pwd: "testpassword",
...       roles: [ { role: "read", db: "test1" }]
...     }

在 pymongo 中连接 mongodb:

import pymongo
client = pymongo.MongoClient('localhost', connect=True)
client['test1'].authenticate('testuser','testpassword',mechanism="DEFAULT")。#这一步的作用是登陆。登陆成功返回TRUE。
db = client['test1'] #登陆成功后,再连接数据库。
db.test.find_one() #查询
db.test.insert_one({'b':2}) #插入。#role决定了用户的权限。如果是只读用户,则不能进行这一步操作。
for i in db.test.find():
    print(i)
client['test'].logout() #退出数据库。

mongodb开启了认证认证后,我发现不能通过pymongo创建新的数据库。

#举例:
client = pymongo.MongoClient('localhost', connect=False)
db = client['jianshu']
db.table1.insert({'a':1}) #这一步报错,提示没有认证登陆。可这是一个新的数据库,根本都还没写入mongodb,怎么认证。

这个时候有两个办法:

  • 一是在mongo终端中先建立一个数据库,设置好用户后,在pymongo中通过用户名和密码连接。
  • 二是关闭认证。

如何关闭认证:

#关闭MongoDB服务
net stop MongoDB
#修改配置文件
auth = false
#安装配置文件
mongod --install -f F:\Program\DATA\Mongo\mongodb.conf
#开启服务:
net start MongoDB

用户授权相关操作

在哪个库下创建用户,这个用户就属于哪个库,且只对这个库有访问权限。

Mongodb 的授权采用了角色授权的方法,每个角色包括一组权限。

数据库用户角色:read、readWrite;

数据库管理角色:dbAdmin、dbOwner、userAdmin;

超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

1、创建用户

db.createUser(
...     {
...       user: "test1",
...       pwd: "test1",
...       roles: [ { role: "dbOwner", db: "test1" }]
...     }

2、修改密码

db.changeUserPassword('testuser','1234') #把数据库test的密码改为1234

3、添加用户权限

db.grantRolesToUser(  "testuser",  [    { role: "read",db:"admin"}  ] )

4、收回用户权限

db.revokeRolesFromUser("testuser",[    { role: "read",db:"admin"}  ] )

5、删除用户

db.dropUser("testuser")

猜你喜欢

转载自blog.csdn.net/zhanshirj/article/details/74356190