数据库-mongoDB安装使用
windows 下安装
下载安装程序,选择自定义安装, 去掉 compass 选项,否则会卡住很久. 这是个 gui 访问界面,收费的.
mongod –dbpath D:\backup\mongoDb\stock
centos 下安装
install version: mongodb-org.x86_64 0:4.0.9-1.el7
- Configure the package management system (yum).
Create a /etc/yum.repos.d/mongodb-org-4.0.repo file so that you can install MongoDB directly using yum:
[mongodb-org-4.0] |
Install the MongoDB packages.
sudo yum install -y mongodb-orgRun MongoDB
- To Use Default Directories
/var/lib/mongo (the data directory) |
By default, MongoDB runs using the mongod user account.
用户和用户组都是 mongod
- To Use Non-Default Directories
太复杂,要改一些东西。用默认的就可以了
sudo service mongod start
随系统启动sudo chkconfig mongod on
sudo service mongod stopsudo service mongod restart
查看日志sudo tail /var/log/mongodb/mongod.log
命令行
mongo
mac 下的安装
brew update |
配置
配置文件
配置文件位置
/etc/mongod.conf
修改
将 net:bindIp: 127.0.0.1 改为 0.0.0.0
打开认证
第一种方法:
mongod –auth –port 27017
第二种方法:使用配置文件:
security:
authorization: enabled //冒号后面需要空一格
开放 27017 端口
- SElinux
semanage port -a -t mongod_port_t -p tcp 27017
- 防火墙
firewall-cmd –zone=public –add-port=27017/tcp –permanent
firewall-cmd –reload
查看用户
#查看当前库下的用户 |
新建用户
先创建管理员,用来创建其他用户。 用户所属范围是数据库。
所以要先建数据库然后在数据库里面建用户。否则无法在使用的数据库里面认证用户
db.createUser(
{
user: “stock”,
pwd: “stock”,
roles: [ { role: “readWrite”, db: “stock” } ]
}
)
db.createUser({ |
Built-In Roles(内置角色):
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) - 内部角色:__system
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile
userAdmin:允许用户向 system.users 集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限
dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。
root:只在 admin 数据库中可用。超级账号,超级权限
删除用户
先要认证管理员,在切换数据库,在删除用户
use testDB |
卸载
1.关闭mongod |
问题
- 启动 MongoDB 提示报警信息:“WARNING: Access control is not enabled for the database.”
新版本的 MongDB 增加了安全性设计,推荐用户创建使用数据库时进行验证。如果用户想建立简单连接,则会提示警示信息。
创建管理员并设置密码
>use admin |
使用
// mongo shell |
重启数据库服务器
mongod --auth --port 27017 --dbpath D:\MongoDB\Data\db |
查询操作
查看版本
mongod -version |
查询数据库
show dbs |
停止
//查看进程并kill |
创建数据库
use stock |
from pymongo import MongoClient |
创建集合,相当于表
# 返回、创建集合 |
创建索引
db.collection.createIndex(keys, options) |
查看索引
查看集合索引 |
插入
collection.insert({'code': code, 'startDate': start_date, 'endDate': end_date, 'klines': dates}) |
获取所有集合
list_collection_names() |
更新数据
其中传入的第一个参数是你想要更新的数据,第二个是你想要更新的最新数据。其中$set部分是必要元素,如果没有会报出错误。除了$set 外还有很多其它的比如$inc,对应着不同的功能,在此先不赘述。
上面只是更新匹配到的第一个数据,同样地,也可以用 update_many()一次更新多个值。
>>>posts.update_one({'x':4},{'$set':{'x':3}}) |
查询
for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }): |
最后 N 条记录
results = collection.find().sort('trade_date', pymongo.DESCENDING).limit(1) |