第一:安装
1、新建文件夹
data文件夹下新建db文件夹
log文件夹下新建mongodb.log【非强求】
bin同级目录新建mongodb.config文件
2、运行mongodb服务
mongod.exe dbpath H:/mongo/data/db
3、配置成系统服务【A 直接运行命令】
管理员权限运行cmd
mongod.exe --dbpath "H:/mongo/data/db"
--logpath "H:/mongo/log/mongodb.log" # mongodb.log自动创建
--auth #开启认证
--serviceName "MongoDB"
--install
开启/关闭服务
net start MongoDB
net Stop MongDB
4、配置成系统服务【B 利用配置文件mongodb.config】
mongodb.config中包含的内容
dbpath=H:/mongo/data/db
logpath=H:/mongo/log/mongodb.log
logappend=True
auth=True
管理员权限运行cmd
mongod.exe -f H:/mongo/mongodb.config --logappen --serviceName Mongodb --reinstall
5、删除服务
a、如下
mongod.exe --remove --serviceName "MongoDB"
b、如下
sc delete "MongoDB"
第二:用户管理,数据备份/恢复
背景:mongondb不存在默认的帐户名
由于之前,我们创建服务的时,已经修改 MongoDB 的启动方式为auth。
1、首先要创建一个用户管理员【必须在admin的数据库下创建】
use admin
db.createUser({
user:'root',
pwd:'123456',
roles:['userAdminAnyDatabase']
})
db.auth('root','123456')
role:'userAdminAnyDatabase',没有读写的权限,也就是不能执行备份/恢复操作。
2、创建数据库
use star
如果数据库star不存在,则新建。
3、为其他数据库单独创建用户名和roles
db.createUser({
user:'savage',
pwd:'123456',
roles:['readWrite']})
4、查看用户
show users
5、备份数据库
mongodump.exe -h 127.0.0.1 -d zhihu -o H:/beifen
6、恢复数据
mongorestore.exe -u Jess -p 12345678wu -d admin h:\mongodb_beifen\zhihu
注意:确保用户Jess对数据库开启足够的权限roles,否则会失败
7、登陆失败 exception: login failed
需要授权对应的数据库:--authenticationDatabase admin/star
mongo.exe -u Jess -p 12345678wu --authenticationDatabase admin
第三:python连接【账号密码】
import pymongo
mongo_host='127.0.0.1'
mongo_port=27017
mongo_user='root1'
mongo_password='123456'
database_name='tao'
data_col='products'
class mongodb():
def __init__(self):
self.client=pymongo.MongoClient('mongodb://{0}:{1}@{2}:{3}'.format(mongo_user,mongo_password,mongo_host,mongo_port))
self.db=self.client[database_name]#获得数据库句柄
self.col=self.db[data_col]#获得
def add(self,item):
self.col.insert(item)
mongo_data=mongodb()
我们自定义一个类,并实现一个添加记录的方法。
a、因为涉及到用户名和密码,pymongo.MongoClient(),传入'mongodb://user:pwd@host:port
这里我们传入的时管理员的账户密码,方便新建数据库。
b、self.db=self.client[database_name] 如果database_name不存在,则会创建一个对应名称的数据库
c、self.col=self.db[data_col] 如果集合collection不存在,则创建一个对应名称的集合