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")