mongodb之用户管理与系统管理常用命令

## mongodb的用户管理(认证管理)

  • 用户分三种

全局用户

数据库对应用户

只读用户

### 创建全局用户(全局用户只能在admin账户下创建)

  • 创建了一个名为zhuima,密码为zhuima的全局账户
[[email protected] ~]# hostname
redis.unix178.com
[[email protected] ~]# mongo
MongoDB shell version: 2.4.6
connecting to: test
> show dbs
local0.078125GB
> use admin
switched to db admin
> db.addUser("zhuima","zhuima")
{
"user" : "zhuima",
"readOnly" : false,
"pwd" : "214c77cbc6bc7d26f28022c30496223d",
"_id" : ObjectId("53cbcb3cc5761ac13c7f6614")
}
>

### 开启配置文件中的auth = true选项

[[email protected] ~]# sed -n ‘/auth/p‘ /etc/mongodb.conf
#noauth = true
#auth = true
auth = true
[[email protected] ~]#

### 重启mongodb进行验证 这里可以看到我们进行show的时候提示没权限

[[email protected] ~]# mongo
MongoDB shell version: 2.4.6
connecting to: test
> show dbs
Sun Jul 20 14:02:01.765 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46
>

### test数据库是默认进入的目录,如果你不想进入test数据库,mongo 后面跟上--nodb即可

### 想要切换到全局用户时,必须先要进入admin数据库才可以

[[email protected] ~]# mongo
MongoDB shell version: 2.4.6
connecting to: test
> use admin
switched to db admin
> db.auth("zhuima","zhuima")
1
> show dbs
admin0.203125GB
local0.078125GB
>

### 创建对应数据库的用户

> use zhuima
switched to db zhuima
> info = {info = {Name:"zhuima",Age:26,Gender:"F",Address:"Beijing China",Work:"Engineer",Other:"DevOps"}
... 
... 
> info = {Name:"zhuima",Age:26,Gender:"F",Address:"Beijing China",Work:"Engineer",Other:"DevOps"}
{
"Name" : "zhuima",
"Age" : 26,
"Gender" : "F",
"Address" : "Beijing China",
"Work" : "Engineer",
"Other" : "DevOps"
}
> db.addUser("nick","zhuima")
{
"user" : "nick",
"readOnly" : false,
"pwd" : "79e274165fd09b1902705535f24eecf9",
"_id" : ObjectId("53cbcd00a6852f086df7d087")
}

### 可以看出nick用户只能对zhuima这个数据库进行权限操作

[[email protected] ~]# mongo
MongoDB shell version: 2.4.6
connecting to: test
> use zhuima
switched to db zhuima
> db.auth("nick","zhuima")
1
> show dbs
Sun Jul 20 14:08:02.743 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46
> show collections
system.indexes
system.users
> db.system.users.find()
{ "_id" : ObjectId("53cbcd00a6852f086df7d087"), "user" : "nick", "readOnly" : false, "pwd" : "79e274165fd09b1902705535f24eecf9" }
> info = {Name:"zhuima",Age:26,Gender:"F",Address:"Beijing China",Work:"Engineer",Other:"DevOps"}
{
"Name" : "zhuima",
"Age" : 26,
"Gender" : "F",
"Address" : "Beijing China",
"Work" : "Engineer",
"Other" : "DevOps"
}
> db.student.insert(info)
> db.student.find()
{ "_id" : ObjectId("53cbcd71d89972ce7ecf83c1"), "Name" : "zhuima", "Age" : 26, "Gender" : "F", "Address" : "Beijing China", "Work" : "Engineer", "Other" : "DevOps" }
>

### 增加一个只读用户

> db.addUser("kale","zhuima",True)
Sun Jul 20 14:10:33.956 ReferenceError: True is not defined
> db.addUser("kale","zhuima",true)
{
"user" : "kale",
"readOnly" : true,
"pwd" : "c705496ba883d8a8acf0855396fa8b5e",
"_id" : ObjectId("53cbcde3d89972ce7ecf83c2")
}
> message = {Name:"kale",Age:26,Gender:"F"}
{ "Name" : "kale", "Age" : 26, "Gender" : "F" }
> db.auth("kale","zhuima")
1
> message = {Name:"kale",Age:26,Gender:"F"}
{ "Name" : "kale", "Age" : 26, "Gender" : "F" }
> show collections
student
system.indexes
system.users
> db.student.insert(message)
not authorized for insert on zhuima.student
> db.auth("nick","zhuima")
1
> db.student.insert(message)
> db.student.find()
{ "_id" : ObjectId("53cbcd71d89972ce7ecf83c1"), "Name" : "zhuima", "Age" : 26, "Gender" : "F", "Address" : "Beijing China", "Work" : "Engineer", "Other" : "DevOps" }
{ "_id" : ObjectId("53cbce5fd89972ce7ecf83c4"), "Name" : "kale", "Age" : 26, "Gender" : "F" }
>

### 删除一个用户

> db.system.users.find()
{ "_id" : "admin.zhuima", "user" : "zhuima", "db" : "admin", "credentials" : { "MONGODB-CR" : "214c77cbc6bc7d26f28022c30496223d" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "zhuima.nick", "user" : "nick", "db" : "zhuima", "credentials" : { "MONGODB-CR" : "b8b8d091c8b634fe785f41cf3339d9ec" }, "roles" : [ { "role" : "dbOwner", "db" : "zhuima" } ] }
{ "_id" : "zhuima.test", "user" : "test", "db" : "zhuima", "credentials" : { "MONGODB-CR" : "a6de521abefc2fed4f5876855a3484f5" }, "roles" : [ { "role" : "dbOwner", "db" : "zhuima" } ] }
{ "_id" : "zhuima.kale", "user" : "kale", "db" : "zhuima", "credentials" : { "MONGODB-CR" : "a47cb6627c18898317171265eeea47e2" }, "roles" : [ { "role" : "dbOwner", "db" : "zhuima" } ] }
> use zhuima
switched to db zhuima
> db.dropUser("test")
true
> show collections
person
system.indexes
> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.zhuima", "user" : "zhuima", "db" : "admin", "credentials" : { "MONGODB-CR" : "214c77cbc6bc7d26f28022c30496223d" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "zhuima.nick", "user" : "nick", "db" : "zhuima", "credentials" : { "MONGODB-CR" : "b8b8d091c8b634fe785f41cf3339d9ec" }, "roles" : [ { "role" : "dbOwner", "db" : "zhuima" } ] }
{ "_id" : "zhuima.kale", "user" : "kale", "db" : "zhuima", "credentials" : { "MONGODB-CR" : "a47cb6627c18898317171265eeea47e2" }, "roles" : [ { "role" : "dbOwner", "db" : "zhuima" } ] }
>

### 用户管理后记

  • 多用help 类似db.help()
  • 看官方文档,然后把命令都敲一遍
  • 多实践才是王道


## 来一些系统的基本的查看管理命令

### help指令

  • 多用help,你会发现原来世界那么美好
> help
db.help()                    help on db methods
db.mycoll.help()             help on collection methods
sh.help()                    sharding helpers
rs.help()                    replica set helpers
help admin                   administrative help
help connect                 connecting to a db help
help keys                    key shortcuts
help misc                    misc things to know
help mr                      mapreduce
show dbs                     show database names
show collections             show collections in current database
show users                   show users in current database
show profile                 show most recent system.profile entries with time >= 1ms
show logs                    show the accessible logger names
show log [name]              prints out the last segment of log in memory, ‘global‘ is default
use <db_name>                set current database
db.foo.find()                list objects in collection foo
db.foo.find( { a : 1 } )     list objects in foo where a == 1
it                           result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x   set default number of items to display on shell
exit                         quit the mongo shell
> db.help()
DB methods:
db.adminCommand(nameOrDocument) - switches to ‘admin‘ db, and runs command [ just calls db.runCommand(...) ]
db.auth(username, password)
db.cloneDatabase(fromhost)
db.commandHelp(name) returns the help for the command
db.copyDatabase(fromdb, todb, fromhost)
db.createCollection(name, { size : ..., capped : ..., max : ... } )
db.createUser(userDocument)
db.currentOp() displays currently executing operations in the db
db.dropDatabase()
db.eval(func, args) run code server-side
db.fsyncLock() flush data to disk and lock server for backups
db.fsyncUnlock() unlocks server following a db.fsyncLock()
db.getCollection(cname) same as db[‘cname‘] or db.cname
db.getCollectionNames()
db.getLastError() - just returns the err msg string
db.getLastErrorObj() - return full status object
db.getMongo() get the server connection object
db.getMongo().setSlaveOk() allow queries on a replication slave server
db.getName()
db.getPrevError()
db.getProfilingLevel() - deprecated
db.getProfilingStatus() - returns if profiling is on and slow threshold
db.getReplicationInfo()
db.getSiblingDB(name) get the db at the same server as this one
db.getWriteConcern() - returns the write concern used for any operations on this db, inherited from server object if set
db.hostInfo() get details about the server‘s host
db.isMaster() check replica primary status
db.killOp(opid) kills the current operation in the db
db.listCommands() lists all the db commands
db.loadServerScripts() loads all the scripts in db.system.js
db.logout()
db.printCollectionStats()
db.printReplicationInfo()
db.printShardingStatus()
db.printSlaveReplicationInfo()
db.dropUser(username)
db.repairDatabase()
db.resetError()
db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj : 1 }
db.serverStatus()
db.setProfilingLevel(level,<slowms>) 0=off 1=slow 2=all
db.setWriteConcern( <write concern doc> ) - sets the write concern for writes to the db
db.unsetWriteConcern( <write concern doc> ) - unsets the write concern for writes to the db
db.setVerboseShell(flag) display extra information in shell output
db.shutdownServer()
db.stats()
db.version() current version of the server
>

### 查看当前所在数据库位置

  • 第一种方式
> 
> db.status
admin.status
>
  • 第二种方式
> db.getName();
admin
>

### 当前数据库版本

> db.version()
2.6.3
>

### 查看当前数据库中的包含的集合

> show collections
system.indexes
system.users
system.version

### 删除数据库

  • 切换到该数据库目录下,进行drop操作即可
> show dbs
admin   0.078GB
local   1.078GB
zhuima  0.078GB
> use zhuima
switched to db zhuima
> db.dropDatabase()
{ "dropped" : "zhuima", "ok" : 1 }
> show dbs
admin  0.078GB
local  1.078GB
>

### 查看各collection的状态

> use admin
switched to db admin
>  db.printCollectionStats()
system.indexes
{
"ns" : "admin.system.indexes",
"count" : 3,
"size" : 336,
"avgObjSize" : 112,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 0,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"systemFlags" : 0,
"userFlags" : 1,
"totalIndexSize" : 0,
"indexSizes" : {
},
"ok" : 1
}
---
system.users
{
"ns" : "admin.system.users",
"count" : 3,
"size" : 720,
"avgObjSize" : 240,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 2,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 16352,
"indexSizes" : {
"_id_" : 8176,
"user_1_db_1" : 8176
},
"ok" : 1
}
---
system.version
{
"ns" : "admin.system.version",
"count" : 1,
"size" : 48,
"avgObjSize" : 48,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 1,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 8176,
"indexSizes" : {
"_id_" : 8176
},
"ok" : 1
}
---
>

### 查看collection数据的大小

> db.system.users.dataSize()
720
>

### 增删查改的文章请移步到上篇文章

时间: 2024-10-13 14:45:26

mongodb之用户管理与系统管理常用命令的相关文章

Linux系统管理常用命令

Linux系统管理常用命令 分类: Linux2011-01-10 18:26 1538人阅读 评论(0) 收藏 举报 linuxcommandservicenginxuserunix 目录(?)[+] 1. 时间date 1)显示当前时间: date .//Wed Jul 29 11:05:11 CST 2009  2)date修改时间:date -s  date 修改时间2007-08-29 14:41 date -s 14:36:30   //时间为14点36分30秒 date 08291

Linux系统管理常用命令学习

在前面的Blog中给大家介绍了Linux安装和目录结构的相关知识,今天我们将正式的走进Linux系统,本期的内容如下: 1.Linux命令功能简单介绍 2.Linux系统管理常用命令 3.Linux系统管理常用热键 4.获取Linux命令帮助 5.内容总结 一.Linux命令功能介绍 首先介绍一个名词"控制台(console)",它就是我们通常见到的使用字符操作界面的人机接口,例如dos.我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令.我们现

linux系统管理常用命令--top

linux系统管理常用命令--top top显示进程所占的系统资源,具体用法介绍如下: top命令用于动态监控进程所占的系统资源,默认每隔3秒变一次.它的特点是把占用系统资源(CPU.内存.磁盘I/O等)最高的进程放到最前面!上例中,top命令打印出了很多信息.包括系统负载(loadaverage).进程数(Tasks).CPU使用情况.内存(Mem)使用情况以及交换分区使用情况. 其中,VIRT这一项表示进程所占的虚拟内存,RES这一项为进程所占的真实内存大小,而%MEM这一项为使用内存的百分

MongoDB快速入门学习笔记7 MongoDB的用户管理操作

1.修改启动MongoDB时要求用户验证加参数 --auth 即可.现在我们把MongoDB服务删除,再重新添加服务 mongod --dbpath "D:\work\MongoDB\data" --logpath "D:\work\MongoDB\log\mongodb.log" --install --serviceName "MongoDB" --auth 2.创建用户,并使用创建的用户登录打开shell操作界面,默认test数据,再查看所

mongodb之用户管理

Mongo 系统数据库介绍以及权限设置. 本文中只正对mongo2.61有效,较低版本中的命令在新版本中慢慢被替换掉了或是不推荐使用.例如,在mongo242版本中使用db.addUser()来创建用户,但是在mongo261中使用这个命令时,会提示不推荐使用这个命令. 1.系统数据库介绍. Mongo中只用两个系统数据,分别是admin  ,和 local .Admin主要用来存储的用户,角色,版本的相关信息.Local 主要存储本地服务器的相关信息(服务器的启动和关闭相关信息,副本集,复制的

linux目录管理和文件管理常用命令

1.目录管理 1.1.Linux的目录结构 .:当前目录 ..:上一级目录 /:根目录 /bin:二进制,可执行的命令 /boot:引导,操作系统用于引导系统启动的文件,内核.grub /dev:设备文件 Linux的设备类型: 字符设备:c,线性设备 块设备:b,随机设备 /etc:配置文件 /home:用户的家目录,/home/USERNAME,jerry,/home/jerry /root:管理员的家目录 /lib,lib64:库文件 /media:挂载点目录,通常用于挂载便携性设备 /m

mongodb的用户管理

简介:由于mongodb数据的用户管理是基于单个库的管理,他的管理策略大概如下 如果验证了admin库的账户,那么所有的库都可以访问 如果验证了非admin库的账户,那么此权限只能访问当前库下的数据 步骤建议: 如果要对数据库进行账户设置,最好我们首先不要开启数据库验证,然后进入admin库,创建密码 退出添加 -auth  验证重启mongodb然后使用admin库的账户进行验证,如果通过那么进入其它库进行账户创建,完成后重新登录进行验证 验证如下: 启动mongod mongod.exe -

MySQL用户管理、sql常用语句、mysql备份与恢复

MySQL用户管理 创建用户 grant all on *.* to 'user1'@'localhost' identified by '123456'; grant all on db1.* to 'user2'@'%' identified by '123456'; //创建user2用户,所有ip都能登录,指定权限为db1库下的所有表: flush privileges; 刷新授权 .:表示所有库和表:user1:用户名:localhost:登录ip,默认localhost为本机登录ip

13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复

13.4 mysql用户管理 grant all on . to 'user1' identified by 'passwd';mysql> grant all on . to 'user1' identified by 'passwd';Query OK, 0 rows affected (0.01 sec) grant SELECT,UPDATE,INSERT on db1. to 'user2'@'192.168.15.132' identified by 'passwd';mysql>