常用 mongo 命令
2016-10-20 by dongnan
举个栗子
进入 mongo shell
mongo 127.0.0.1
MongoDB shell version: 3.2.9
connecting to: test
当前数据库
> db
test
使用 admin 库
> use admin
switched to db admin
创建用户
# 超级用户
> db.createUser({user:'root',pwd:'password', roles:[{role:'userAdminAnyDatabase', db:'admin'}]})
# 库管理员
> use demo
> db.createUser({user:'demo',pwd:'zongming.net',roles:[{role:"dbOwner",db:"demo"}]})
认证用户
> db.auth('root','zongming.net')
#0:代表授权失败, 1:代表授权成功
列出所有库
> show dbs;
admin  0.000GB
local  0.000GB
# 刚创建的数据库不在数据库的列表中,这是因为数据库中还没有插入一些数据。
列出所有用户
> show users;
{
    "_id" : "admin.root",
    "user" : "root",
    "db" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
删除账户
> db.removeUser('demo')
WARNING: db.removeUser has been deprecated, please use db.dropUser instead
true
更改账户密码
> db.changeUserPassword('demo','zongming.net')
权限配置问题
问题描述
使用 dbadmin 权限插入数据,提示 not authorized on test to execute command
解决方法
添加读写权限
使用库
use admin
授权
db.grantRolesToUser("dongnan",["readWrite"])
验证
db.getUser('dongnan')
{
    "_id" : "dongnan.dongnan",
    "user" : "dongnan",
    "db" : "dongnan",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "dongnan"
        },
        {
            "role" : "dbAdmin",
            "db" : "dongnan"
        }
    ]
}
验证权限
use dongnan
db.auth('dongnan','password')
db.spider_engine.insert({"name":"test","code":""})
登录远程服务器
例子,登录远程 mongodb 服务器
mongo mongo_server_ip/admin -u dongnan -p
命令参数
mongo --help
MongoDB shell version: 3.2.9
usage: mongo [options] [db address] [file names (ending in .js)]
db address can be:
  foo                   foo database on local machine
  192.169.0.5/foo      foo database on 192.168.0.5 machine
  192.169.0.5:9999/foo  foo database on 192.168.0.5 machine on port 9999
Options:
  --shell                             run the shell after executing files
  --nodb                              don't connect to mongod on startup - no
                                      'db address' arg expected
  --norc                              will not run the ".mongorc.js" file on
                                      start up
  --quiet                             be less chatty
  --port arg                          port to connect to
  --host arg                          server to connect to
  --eval arg                          evaluate javascript
  -h [ --help ]                       show this usage information
  --version                           show version information
  --verbose                           increase verbosity
  --ipv6                              enable IPv6 support (disabled by default)
  --disableJavaScriptJIT              disable the Javascript Just In Time
                                      compiler
  --enableJavaScriptProtection        disable automatic JavaScript function
                                      marshalling
  --ssl                               use SSL for all connections
  --sslCAFile arg                     Certificate Authority file for SSL
  --sslPEMKeyFile arg                 PEM certificate/key file for SSL
  --sslPEMKeyPassword arg             password for key in PEM file for SSL
  --sslCRLFile arg                    Certificate Revocation List file for SSL
  --sslAllowInvalidHostnames          allow connections to servers with
                                      non-matching hostnames
  --sslAllowInvalidCertificates       allow connections to servers with invalid
                                      certificates
  --sslFIPSMode                       activate FIPS 140-2 mode at startup
Authentication Options:
  -u [ --username ] arg               username for authentication
  -p [ --password ] arg               password for authentication
  --authenticationDatabase arg        user source (defaults to dbname)
  --authenticationMechanism arg       authentication mechanism
  --gssapiServiceName arg (=mongodb)  Service name to use when authenticating
                                      using GSSAPI/Kerberos
  --gssapiHostName arg                Remote host name to use for purpose of
                                      GSSAPI/Kerberos authentication