MongoDB 入门
官网 https://www.mongodb.com/
一、安装
1.1 Windows安装Mongo
先下载安装文件,启动安装界面后选择Custom安装,安装路径选择D:\programs\MongoDB\Server\3.4,按向导完成安装。
创建D:\programs\MongoDB\data\db目录,以管理员身份运行cmd
cd D:\programs\MongoDB\Server\3.4\bin
1.1.1 不使用 --auth
mongod --dbpath D:\programs\MongoDB\data\db
mongo 连接mongodb
show dbs
use admin
db.getName()
db.createUser(
{
user: "admin",
pwd: "admin",
roles:[{ role: "userAdminAnyDatabase", db: "admin"}]
}
)
show users
db.shutdownServer() 关闭 mongoDB
1.1.2 创建用户后,使用 --auth
创建一个配置文件位于 D:\programs\MongoDB\mongod.cfg,内容:
systemLog:
destination: file
path: D:\programs\MongoDB\data\log\mongod.log
logAppend: true
storage:
dbPath: D:\programs\MongoDB\data\db
net:
bindIp: 127.0.0.1
port: 27017
mongod --auth -f D:\programs\MongoDB\mongod.cfg
mongo 没有auth前所有操作都会失败
db.auth("admin", "admin")
show dbs
show collections 报错,因为admin只有用户管理的权限
下面创建用户,用户都跟着库走,创建的用户都是
use crm
db.createUser(
{
user: "yinww",
pwd: "hello123",
roles: [
{role: "readWrite", db: "crm"}
]
}
)
查看整个mongoDB全部的用户
use admin
db.system.users.find()
db.shutdownServer() 报错Unauthorized,是缺少hostManger的这个角色,这个角色具有shutdown的权限
db.grantRolesToUser("admin", [{role: "hostManager", db: "admin"}]) 给admin赋予hostManager权限
db.auth("yinww","hello123")
show collections
安装 MongoDB服务
mongod.exe --auth --config D:\programs\MongoDB\mongod.cfg --install (需要以管理员身份运行的cmd)
或者通过sc create创建服务
sc create MongoDB binpath= "D:\programs\MongoDB\Server\3.4\bin\mongod.exe --dbpath D:\programs\MongoDB\data\db --logpath D:\programs\MongoDB\data\log\mongod.log --logappend --bind_ip 127.0.0.1 --port 27017 --auth --service" start= auto
mongod具体的参数可通过mongod --help查询到。
mongod.exe --remove 卸载服务
1.1.3 报错:[main] Error connecting to the Service Control Manager: 拒绝访问。 (5)
原因:cmd没有用管理员权限
解决:以管理员身份运行cmd
1.2 CentOS7安装Mongo
1.2.1 安装
https://www.mongodb.com/ 下载RHEL 7 Linux 64-bit x64版本mongodb-linux-x86_64-rhel70-3.4.10.tgz ,上传到/home/yinww/soft
tar zxvf mongodb-linux-x86_64-rhel70-3.4.10.tgz
mv mongodb-linux-x86_64-rhel70-3.4.10 mongodb
mv mongodb /home/yinww/
cd /home/yinww/mongodb/
mkdir logs
mkdir data
vi mongod.cfg 内容
dbpath=/home/yinww/mongodb/data
logpath=/home/yinww/mongodb/logs/mongod.log
bind_ip=127.0.0.1
port=27017
fork=true
groupadd mongod
useradd mongod -g mongod
cd ..
chown -R mongod:mongod mongodb
/home/yinww/mongodb/bin/mongod -f /home/yinww/mongodb/mongod.cfg 非auth启动,创建用户
cd /home/yinww/mongodb/bin
./mongo
show dbs
use admin
db.version()
db.createUser(
{
user: "admin",
pwd: "admin",
roles:[{ role: "userAdminAnyDatabase", db: "admin"}]
}
)
可以根据需要创建多个用户
db.shutdownServer()
quit()
1.2.2、安全设置
vi mongod.cfg 添加一行
auth=true
rest=false
/home/yinww/mongodb/bin/mongod -f /home/yinww/mongodb/mongod.cfg 重新启动mongo,此时是auth启动
1.3、参考资料:
https://docs.mongodb.com/manual/reference/configuration-options/
https://docs.mongodb.com/manual/tutorial/enable-authentication/
二、MongoDB语法和命令:
> db.help()
> use admin
> db.auth("admin", "admin")
> show dbs
> use crm
> db.auth("yinww", "hello123")
> show collections
> db.stats()
{
"db" : "crm",
"collections" : 2,
"views" : 0,
"objects" : 1,
"avgObjSize" : 92,
"dataSize" : 92,
"storageSize" : 40960,
"numExtents" : 0,
"indexes" : 2,
"indexSize" : 40960,
"ok" : 1
}
> db
> db.getName()
> db.user.find()
> db.user.insert({"name":"mayun", "age":50})
> db.user.remove({"_id": ObjectId("5a0c36622f7bacfe592c2f4f")})
> db.createCollection("module")
> show collections
> db.user.findOne()
> db.user.count()
use DATABASE_NAME
如果数据库不存在,则指向数据库,但不创建(等待实际数据入库时创建),否则切换到指定数据库。
创建用户
> db.createUser(
{
user: "smsadmin",
pwd: "hello123",
roles: [
{role: "readWrite", db: "sms"}
]
}
)
> db.dropDatabase() 删除当前的数据库
本文内容到此结束,更多内容可关注公众号