环境:CentOS 7.0
MongoDB版本:version v3.4.15
python 版本:3.6
利用yum工具安装MongoDB数据库:
首先,添加MongoDB源:
sudo vi /etc/yum.repos.d/mongodb-org.repo
接着修改如下内容并保存:
[mongodb-org-3.4]
name=MongoDB Repository
baserurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
然后执行命令:
sudo yum install mongodb-org
创建MongoDB数据库保存路径:
mkdir /data/db
运行MongoDB并设置数据文件保存路径:
mongo --port 27017 --dbpath /data/db
下面开始配置远程连接以及用户名和密码:
首先进入MongoDB命令行:
mongo --port 27017
在MongoDB命令行交互模式下,执行如下命令:
>usr admin
switched to db admin
>db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]})
Successfully addes user:{
"user":"admin",
"roles":[
{
"role":"root",
"db":"admin"
}
]
}
这里我们创建了一个用户名为admin,密码为admin的用户,权限为root
下面配置MongoDB的配置文件,执行如下命令:
sudo vi /etc/mongod.conf
修改net部分:
net:
port: 27017
bindIp: 0.0.0.0
添加如下的权限认证配置:
security:
authorization:enabled
这样远程连接和权限认证配置完成,但是还是不能远程连接的,还需要修改linux的firewall策略:
[root@localhost etc]# firewall-cmd --zone=public --add-port=27017/tcp # 修改firewall规则
success
[root@localhost etc]# firewall-cmd --permanent --zone=public --add-port=27017/tcp
success
[root@localhost etc]# firewall-cmd --reload # 永久保存
success
python连接数据库并插入数据:
import pymongo
# 连接数据库:
# 方法一:
client = pymongo.MongoClient('mongodb://admin:[email protected]:27017/')
# 方法二:
# client = pymongo.MongoClient(host='192.168.1.106', port=27017)
# 指定数据库:
# 方法一:
db = client.test
# 方法二:
# db = client["test"]
# 制定集合:
# collection = db.students
collection = db["students"]
student = {
"id": "10180101",
"name": "jorden",
"age": 20,
"gender": "male"
}
result = collection.insert_one(student)
print(result)
结果(MongoDB的一个ObjectId类型的_id属性):
<pymongo.results.InsertOneResult object at 0x0535F530>