Mongodb是非常好用的NoSQL数据库,在我看来是非常好用的爬虫利器,特别方便好用。这里记录下MongoDB在日常使用中遇到的一些坑及操作.
数据库的常用操作(MongoDB & 防火墙配置) yuenshui.cn
MongoDB的安装,可参考 菜鸟教程
mongodb启动:
在Linux 系统中直接运行bin文件夹中的mongod就行了 。 如下是在Windows系统的批命令,其中.lock
文件是用来锁定数据使用,若上次非正常关闭,则需要删除此文件,否则会报错。
@echo off
echo 开启mongodb中,等待ing...
if exist C:\A@常用\PythonDir\mongoDB\mongodb-win32-i386-2.0.4\data\db\mongod.lock (del C:\A@常用\PythonDir\mongoDB\mongodb-win32-i386-2.0.4\data\db\mongod.lock) else (echo 未发现lock文件)
::进入c盘
cd C:\A@常用\PythonDir\mongoDB\mongodb-win32-i386-2.0.4\bin
mongod --dbpath "C:\Python\MongoDB\data"
pause
mongodb数据的导入导出
# mongoexport导出文件格式支持csv和json,不同的是csv格式必须显示的指定要导出的字段,如:
mongoexport -d database -c collections -o d:/a.csv -csv -f name,type
#而json格式则不需要
mongoexport -d database -c collections -o D:/学习/rbac/rbac/a.json --json
# 将a.csv里的数据导入到database 数据库中的collections 表中,如果不存在则自动创建
mongoimport -d database -c collections --file D:/a.csv --headerline --upsert
mongodb的查询操作
# 查询唯一值数据--类似于关系型数据库中的select distinct
db.<collection_name>.distinct("<field_name>")
# 查询唯一值的数量
db.<collection_name>.distinct("<field_name>").length
MongoDB的远程连接
MongoDB的服务器端设置,包括端口打开、开启服务器、新建用户操作
# 首先需要开启服务器的27017端口,确保本地计算机可连接到远程服务器
# 开启远程服务器Mongod,bind_ip确保所有ip均可访问,--auth开启用户访问验证
./mongod --bind_ip 0.0.0.0 --auth
# 新建MongoDB的用户名,用来远程登录验证用
db.createUser(
{
user: "xxxx",
pwd: "xxxx",
roles: [
{
role: "userAdminAnyDatabase",
db: "admin"
},
{
role: "readWrite",
db: "blog"
}
]
}
)
本地MongoDB连接远程Mongodb服务器
mongo <ip>:<port> -u <user_name> -p <password>
MongoDB远程访问的防火墙设置
由于只是个人使用,采用授权Auth的方式不太方便,而bind_ip 0.0.0.0
的话,存在数据安全风险。这里采用另一折中的方法,仍bind_ip 0.0.0.0
,但设置防火墙,仅对指定的IP开放27017端口。
# Linux 防火墙端口 (iptables)
查看防火墙状态: service iptables status
开启防火墙(重启后永久生效):chkconfig iptables on
关闭防火墙(重启后永久生效):chkconfig iptables off
开启防火墙(即时生效,重启后失效):service iptables start
关闭防火墙(即时生效,重启后失效):service iptables stop
重启防火墙: /etc/init.d/iptables restart
开启特定IP的某个端口,按照如下步骤:
- 编辑
/etc/sysconfig/iptables
(开启6379端口);
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 6379 --state NEW -j ACCEPT
如果有访问ip限制,就添加-s ip
地址了
- 重启防火墙
/etc/init.d/iptables restart
(2)除了在Linux命令行中设置,在阿里云服务器的安全规则中也可直接设置。
这里推荐关闭Linux服务器的防火墙,使用阿里云的安全组,更加方便!
欢迎关注个人公众号“畅所欲言的小笔记”:talk_freely,每周定期更新文章!