Mongodb介绍与安装部署, 简单使用, 用户管理+验证库

1. 逻辑结构

Mongodb 逻辑结构 MySQL逻辑结构
库database 库
集合(collection) 表
文档(document) 数据行

2. 安装部署

1、系统准备

(1)redhat或cnetos6.2以上系统
(2)系统开发包完整
(3)ip地址和hosts文件解析正常
(4)iptables防火墙&SElinux关闭
(5)关闭大页内存机制

root用户下

cat >>/etc/rc.local < /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
EOF 

[root@standby opt]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@standby opt]# echo never > /sys/kernel/mm/transparent_hugepage/defrag

其他系统关闭参照官方文档:

https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

3. mongodb安装配置

1. 创建所需用户和组
groupadd -g 800 mongod
useradd -u 801 -g mongod mongod
passwd mongod

2. 创建mongodb所需目录结构
mkdir -p /mongodb/bin
mkdir -p /mongodb/conf
mkdir -p /mongodb/log
mkdir -p /mongodb/data

3. 上传并解压软件到指定位置
上传到:
cd   /opt/
解压:
tar xf mongodb-linux-x86_64-rhel70-3.4.16.tgz

4. 设置目录结构权限
chown -R mongod:mongod /mongodb

5. 设置用户环境变量
su - mongod

cat >> .bash_profile << EOF
export PATH=/mongodb/bin:$PATH
EOF

source .bash_profile

6. 启动mongodb
mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork

7. 登录mongodb
[mongod@server2 ~]$ mongo
注:连接之后会有warning,需要修改(使用root用户)
vim /etc/security/limits.conf 
#*       -       nofile       65535 

reboot重启生效

8. 使用配置文件
vim /mongodb/conf/mongodb.conf

logpath=/mongodb/log/mongodb.log
dbpath=/mongodb/data 
port=27017
logappend=true
fork=true

9. 关闭mongodb
mongod -f /mongodb/conf/mongodb.conf --shutdown

10. 使用配置文件启动mongodb
mongod -f /mongodb/conf/mongodb.conf




YAML模式的配置文件
--
NOTE:
YAML does not support tab characters for indentation: use spaces instead.

--系统日志有关  
systemLog:
   destination: file        
   path: "/mongodb/log/mongodb.log"    --日志位置
   logAppend: true                     --日志以追加模式记录

--数据存储有关   
storage:
   journal:
      enabled: true
   dbPath: "/mongodb/data"            --数据路径的位置
   
 -- 进程控制  
processManagement:
   fork: true                         --后台守护进程
   pidFilePath:               --pid文件的位置,一般不用配置,可以去掉这行,自动生成到data中
   
   
--网络配置有关   
net:            
   bindIp:                        -- 监听地址,如果不配置这行是监听在0.0.0.0
   port:                        -- 端口号,默认不配置端口号,是27017
   
-- 安全验证有关配置      
security:
  authorization: enabled              --是否打开用户名密码验证
  
  
YAML例子 
cat >> /mongodb/conf/mongo.conf << EOF
systemLog:
   destination: file
   path: "/mongodb/log/mongodb.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/mongodb/data/"
processManagement:
   fork: true
net:
   port: 27017
EOF  

4. mongodb常用基本操作

  1. 启动, 关闭, 配置文件启动

    启动: mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --for
    关闭: mongod -f mongodb.conf  --shutdown
    配置文件启动: mongod -f /mongodb/conf/mongo.conf 
    
  2. mongodb 默认存在的库

    test:
    登录时默认存在的库
    
    管理mongodb有关的系统库
    admin库:
     系统预留库,mongodb系统管理库
    local库:
     本地预留库,存储关键日志
    
  3. 命令分类

    库(database)
    show databases 
    show dbs
    use oldguo
    db
    
    表(collection集合)
    show tables
    show collections
    
    数据行(document)
    db.表名.insert()
    
    复制集有关(replication set):
    rs.
    
    分片集群(sharding cluster)
    sh.
    
    帮助 .help()
    db.help()
    db.a.help()
    rs.help()
    sh.help()
    
  4. 常用操作

    查看当前db版本     db.version()
    显示当前数据库     db
    查询所有数据库     show dbs
    切换数据库        use local
    查看所有的collection   show  tables;
    显示当前数据库状态     
     use local  
     db.stats()
    
    查看当前数据库的连接机器地址  db.getMongo()
    
  5. mongo与mysql对应关系

    mongo mysql
    库 -----> 库
    集合 -----> 表
    文档 -----> 数据行

  6. 库的操作:

    创建数据库:
     当use的时候,系统就会自动创建一个数据库。
     如果use之后没有创建任何集合。
     系统就会删除这个数据库。
    删除数据库
     如果没有选择任何数据库,会删除默认的test数据库
     db.dropDatabase()
    
  7. 集合的操作:

    方法1: db.createCollection('a')
    方法2:当插入一个文档的时候,一个集合就会自动创建。
    db.stu.insert({id:101,name:"zhangsan",age:20,gender:"m"})
    
  8. 查询数据:

    db.stu.find({}).pretty()
    db.stu.find({id:101}).pretty();
    
  9. 删除集合

    db.stu.drop()
    
  10. 重命名集合 , 把log改名为log1

    db.log.renameCollection("log1")
    
  11. 批量插入数据

    for(i=0;i<10000;i++){db.log.insert({"uid":i,
    "name":"mongodb","age":6,"date":new Date()})}
    

5. 用户管理

注意:
验证库,建立用户时use到的库,在使用用户时,要加上验证库才能登陆。
对于管理员用户,必须在admin下创建.

use admin 
mongo 10.0.0.200/admin

db.createUser

{
    user: "",
    pwd: "",
    roles: [
       { role: "",
     db: "" } | "",
    ...
    ]
}

基本语法说明:

user:用户名
pwd:密码
roles:
    role:角色名
    db:作用对象
    
role:root, readWrite,read   

验证数据库:

mongo -u oldguo -p 123 10.0.0.200/oldguo
总结:
1、在创建普通用户时,一般事先use 到想要设置权限的库下;或者所有普通用户使用同一个验证库,比如test
2、root角色的创建,要在admin下进行创建
3、创建用户时你use到的库,在将来登录时候,使用以下方式登录,否则是登录不了的
  1. 创建超级管理员:管理所有数据库(必须use admin再去创建)

    $ mongo
    
    use admin
    
    db.createUser(
    {
        user: "root",
        pwd: "root123",
        roles: [ { role: "root", db: "admin" } ]
    }
    )
    
    验证用户
    db.auth('root','root123')
    
    配置文件中,加入以下配置
    security:
      authorization: enabled
      
    重启mongodb
    mongod -f /mongodb/conf/mongo.conf --shutdown 
    mongod -f /mongodb/conf/mongo.conf
    
    登录验证
    mongo -uroot -proot123  admin
    mongo -uroot -proot123  10.0.0.200/admin
    
    查看用户:
    use admin
    db.system.users.find().pretty()
    
  2. 创建库管理用户

    mongo -uroot -proot123  admin
    
    use app
    
    db.createUser(
    {
    user: "admin",
    pwd: "admin",
    roles: [ { role: "dbAdmin", db: "app" } ]
    }
    )
    
    db.auth('admin','admin')
    
    登录测试
    mongo -uadmin -padmin 10.0.0.200/app
    
  3. 创建对app数据库,读、写权限的用户app01:

    (1)超级管理员用户登陆
    mongo -uroot -proot123 admin
    
    (2)选择一个验证库
    
    use app
    
    (3)创建用户
    db.createUser(
     {
         user: "app01",
         pwd: "app01",
         roles: [ { role: "readWrite" , db: "app" } ]
     }
    )
    
    
    
    mongo  -uapp01 -papp01 app
    
  4. 创建app数据库读写权限的用户并对test数据库具有读权限:

    mongo -uroot -proot123 10.0.0.200/admin
    use app
    db.createUser(
    {
    user: "app03",
    pwd: "app03",
    roles: [ { role: "readWrite", db: "app" },
    { role: "read", db: "test" }
    ]
    }
    )
    
  5. 查询mongodb中的用户信息

    mongo -uroot -proot123 10.0.0.200/admin
    db.system.users.find().pretty()
    
  6. 删除用户(root身份登录,use到验证库)

    删除用户
    mongo -uroot -proot123 10.0.0.200/admin
    use app
    db.dropUser("app01")
    

你可能感兴趣的:(Mongodb介绍与安装部署, 简单使用, 用户管理+验证库)