安装MongoDB
- 创建所需用户和组
[root@mgDB ~]# useradd mongod
[root@mgDB ~]# passwd mongod
- 创建mongodb所需目录结构
[root@mgDB ~]# mkdir -p /mongodb/27017/{conf,log,data,bin}
- 解压文件
[root@mgDB ~]# tar xf mongodb-linux-x86_64-rhel70-3.2.16.tgz
- 拷贝bin目录下程序到/mongodb/27017/bin
[root@mgDB ~]# cp -a mongodb-linux-x86_64-rhel70-3.2.16/bin/* /mongodb/bin
- 设置目录结构权限
[root@mgDB ~]# chown -R mongod:mongod /mongodb
- 设置用户环境变量
[root@mgDB ~]# su - mongod
[root@mgDB ~]$ vi .bash_profile
export PATH=/mongodb/bin: source .bash_profile
- 启动MongoDB
mongod --dbpath=/mongodb/27017/data --logpath=/mongodb/27017/log/mongodb.log --port=27017 --logappend --fork
- 使用配置文件
[root@mgDB ~]# vim /mongodb/27017/conf/mongodb.conf
logpath=/mongodb/27017/log/mongodb.log
dbpath=/mongodb/27017/data
port=27017
logappend=true
fork=true
YAML格式:
systemLog:
destination: file
path: “/mongodb/27017/log/mongodb.log” --日志位置
logAppend: true --日志以追加模式记录
–数据存储有关
storage:
journal:
enabled: true
dbPath: “/mongodb/data” --数据路径的位置
– 进程控制
processManagement:
fork: true --后台守护进程
–网络配置有关
net:
bindIp: 127.0.0.1 – 监听地址,如果不配置这行是监听在0.0.0.0
port: 27017 – 端口号,默认不配置端口号,是27017
– 安全验证有关配置
security:
authorization: enabled --是否打开用户名密码验证
- 关闭mongodb
[root@mgDB ~]$ mongod -f /mongodb/27017/conf/mongodb.conf --shutdown
- 使用配置文件启动mongodb
[root@mgDB ~]$ mongod -f /mongodb/27017/conf/mongodb.conf
- systemd 管理(root)
[root@mgDB ~]# cat > /etc/systemd/system/mongod.service <<EOF
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
User=mongod
Type=forking
ExecStart=/mongodb/27017/bin/mongod --config /mongodb/27017/conf/mongo.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/mongodb/27017/bin/mongod --config /mongodb/27017/conf/mongo.conf --shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
MongoDB常用基本操作
mongodb默认存在的库
>show databases
admin 0.000GB
config 0.000GB
local 0.000GB
查看当前db版本
> db.version()
显示当前数据库
> db
或
> db.getName()
查询所有数据库
> show dbs
切换数据库
> use local
switched to db local
显示当前数据库状态
> db.stats()
查看所有的collection
show tables
查看当前数据库的连接机器地址
> db.getMongo()
connection to 127.0.0.1
创建数据库
use dbname
当use的时候,系统就会自动创建一个数据库。如果use之后没有创建任何集合。系统就会删除这个数据库。
删除数据库
如果没有选择任何数据库,会删除默认的test数据库
test> use test
test> db.dropDatabase()
创建集合
admin> use app
app> db.createCollection('a')
> show collections //查看当前数据下的所有集合3
或
> db.getCollectionNames()
方法2:当插入一个文档的时候,一个集合就会自动创建。
>use oldboy
oldboy> db.oldguo.insert({id : "1021" ,name : "zn" ,age : "22" ,gender : "female",address : "sz"})
查询数据
> db.oldboy.find({id:"101"}).pretty()
> db.oldboy.find().pretty()
app> db.log.findOne() //查看第1条记录
app> db.log.count() //查询总的记录数
app> db.log.totalSize() //集合中索引+数据压缩存储之后的大小
删除集合
app> use app
app> db.log.drop()
重命名集合
app> db.log.renameCollection("log1")
批量插入数据
for(i=0;i<10000;i++){db.log.insert({"uid":i,"name":"mongodb","age":6,"date":newDate()})}
用户管理
-
建用户时,use到的库,就是此用户的验证库
-
登录时,必须明确指定验证库才能登录
-
通常,管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库
-
如果直接登录到数据库,不进行use,默认的验证库是test
创建用户use admin mongo 10.0.0.51/admin db.createUser { user: "<name>", pwd: "<cleartext password>", roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ] }
基本语法说明:
user:用户名
pwd:密码
roles:
role:角色名
db:作用对象
role:root, readWrite,read
例:
use app
db.createUser(
{
user: "app01",
pwd: "app01",
roles: [ { role: "readWrite" , db: "app" } ]
}
)
创建app数据库读写权限的用户并对test数据库具有读权限:
use app
db.createUser(
{
user: "app03",
pwd: "app03",
roles: [ { role: "readWrite", db: "app" },
{ role: "read", db: "test" }]})
查询mongodb中的用户信息
db.system.users.find().pretty()