mongoDB
逻辑
库——-mysql库
集合——-mysql表
文档json——–数据行
安装mongoDB
(1)redhat或centos6.2以上系统
(2)系统开发包完整
(3)ip地址和hosts文件解析正常
(4)iptables防火墙&SElinux关闭
(5)关闭大页内存机制
########################################################################
root用户下
在vi /etc/rc.local最后添加如下代码
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
sh /etc/rc/local
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
- 下载
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.10.tgz
- 创建用户和目录
useradd mongod
passwd mongod
mkdir -p /mongodb/conf
mkdir -p /mongodb/log
mkdir -p /mongodb/data
- 解压文件配置环境变量
cd mongodb-linux-x86_64-rhel70-4.0.10
cp -r bin/ /mongodb/
chown -R mongod:mongod /mongodb/
su - mongod
vi .bash_profile
export PATH=/mongodb/bin:$PATH
source .bash_profile
- 启动
mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork
- 登录
mongo
- 配置文件
[mongod@node1 ~]$ cat /mongodb/conf/mongo.conf
systemLog:
destination: file
path: "/mongodb/log/mongodb.log" #日志位置
logAppend: true #日志已追加模式记录
storage:
journal:
enabled: true
dbPath: "/mongodb/data/" #数据目录
processManagement:
fork: true #后台守护进程
net:
port: 27017 #端口
bindIp: 192.168.57.3,127.0.0.1 #监听地址
- 重启
mongod -f /mongodb/conf/mongo.conf --shutdown
mongod -f /mongodb/conf/mongo.conf
- systemd启动
[mongod@node1 ~]$ cat /mongodb/conf/mongo.conf
systemLog:
destination: file
path: "/mongodb/log/mongodb.log" #日志位置
logAppend: true #日志已追加模式记录
storage:
journal:
enabled: true
dbPath: "/mongodb/data/" #数据目录
processManagement:
fork: true #后台守护进程
net:
port: 27017 #端口
bindIp: 192.168.57.3,127.0.0.1 #监听地址
systemctl restart mongod
常用的操作
show databases; 查看所有的库
admin 0.000GB
config 0.000GB
local 0.000GB
admin库:系统预留库,MongoDB系统管理库
local库:本地预留库,存储关键日志
config库:MongoDB配置信息库
> use admin; 使用这个库 如果不存在自动创建
switched to db admin
> show tables; 查看表
system.version
集合的操作
创建一个集合
方式1
db.createCollection('a')
用户及权限认证
创建管理员用户
db.createUser({ user:"root", pwd:"123456", roles: [ {role:"root",db:"admin"}]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
基本语法说明:
user:用户名
pwd:密码
roles:
role:角色名
db:作用对象
role有以下三种:
root, 管理员
readWrite, 读写
read 只读
启动安全认证,配置文件加入以下内容重启mongod
security:
authorization: enabled
登录验证
第一种验证方式
[root@node1 ~]# mongo
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("68a613a0-9511-434f-bae1-618639df1dc5") }
MongoDB server version: 4.0.10
> show databases; 可以看到没授权之前查不到任何数据,然后我们开始认证
> use admin
switched to db admin
> db.auth('root','123456')
1
> show databases;
admin 0.000GB
config 0.000GB
jcwit 0.000GB
local 0.000GB
第二种验证方式
mongo -uroot -p123456 admin
mongo -uroot -p123456 192.168.57.3/admin
查看用户
db.system.users.find().pretty()
{
"_id" : "admin.root",
"userId" : UUID("0cde9fc8-8069-4ecf-8439-e9650e7c640b"),
"user" : "root",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "dro9/DzODNL2gT/ZCgLJrQ==",
"storedKey" : "spn1Y5jjsf8ZpxR+S0/nJecGKGo=",
"serverKey" : "XpY0/zlZExEJnvKMrbEKLbcE6cY="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "zqSSyhRfUhGPt/U5hPJomZOI6L3guT+bJ1agnQ==",
"storedKey" : "EnVbmPEogJPWmfP9OPAyts/Jycwx4PP78NR2Vf1iDrI=",
"serverKey" : "5/4DDb6ecWtPrBMiVPb4Q7S46Gim5w9shRskKnbtAk8="
}
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
创建普通管理用户
> use jcwit
switched to db jcwit
> db.createUser({user:"jcwit",pwd:"123",roles:[{role:"readWrite",db:"jcwit"}]})
Successfully added user: {
"user" : "jcwit",
"roles" : [
{
"role" : "readWrite",
"db" : "jcwit"
}
]
}
mongo -ujcwit -p123 jcwit 登录管理jcwit这个库
删除用户
> use jcwit
switched to db jcwit
> db.dropUser("jcwit")
true
mongoDB
http://www.jcwit.com/article/66/