一些基本内容的记录,没有深度,只是简单的使用。

一、用户管理:

mongodb 默认没有用户,管理用户需要切换到 admin 库下: use admin

1、创建用户

需要在 admin 库下进行操作

参数描述
user指定用户名
pwd密码
roles对象数组,可以指定对多个表的操作权限
> use admin;
> db.createUser(
  {
    user: "admin",
    pwd: "123456",
    roles: [
       { role: "read", db: "reporting" },
       { role: "read", db: "products" },
       { role: "read", db: "sales" },
       { role: "readWrite", db: "accounts" }
    ]
  }
)

Successfully added user: {
    "user" : "root",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

2、设置 mongodb 启动验证

在运行 mongod 的时候,后面加上 --auth 参数:

/usr/local/mongodb/bin/mongod  --dbpath /data/mongodb/ --logpath /data/mongolog --fork --port 27017 --auth

3、验证用户操作

开启 --auth 之后,如果没有验证用户,则无法对表进行操作

验证用户的登录:

db.auth(name,password);

> use admin
switched to db admin
> db.auth("root","123456")
1

完成验证后,可以对该用户能够操作的表进行操作,没有给 role 的表依旧没有权限操作。

如果在连接的时候,直接使用该用户进行连接且验证,则可以通过下面的方式,启动 mongo 客户端:

需要注意的是,因为用户是在 admin 中增加的,因此 authenticationDatabase 的值是 admin

mongo -p 27017 -u "root" -p "123456" --authenticationDatabase "admin"

4、完整的使用示例:

在 test 数据库上添加用户 root,密码 root,只对 test 有读写操作权限,启动 mongo 需要验证权限

db.createUser({user:'root',pwd:'root',roles:[{role:'readWrite',db:'test'}]})

5、查看某个用户的信息

> use admin
> db.getUser('root')
{
    "_id" : "admin.root",
    "user" : "root",
    "db" : "admin",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

6、删除某个用户

use admin
db.dropUser(用户名)

7、更改密码

use admin
db.changeUserPassword("root",'newpassword')

二、导入导出操作

通用的参数:

参数描述
-h主机
--port端口
-u用户名
-p密码

1、导出操作

参数描述
-d
-ccollection
-f字段(列)
--type导出类型,默认json,可以选择 vsv
-q'{age:{$gt:23}}' 查询条件 需要加引号
-o导出文件路径
./mongoexport -u "root" -p "123456" --authenticationDatabase "admin" -d test  -c user -f name  --type csv -o  "/data/backup/20180515-test.csv"

2、导入操作

参数描述
-d代导入的数据库
-c导入的表,不存在则继续创建
-f导入的字段
--file备份文件路径
--type文件类型
--headerline如果是csv格式,第一行是字段标识,需要去掉
./mongoimport -d test -c user --type csv --headerline  --file "/data/backup/20180515-test.csv" 

三、二进制导入导出 :mongodump

主要用于备份操作

导出:

./mongodump -d test  -o /data/backup/dump/

TIM截图20180515192738.jpg

导入:

./mongorestore -d test --dir /data/backup/dump/test

mongodump 的文档地址: