簡介:由于mongodb資料的使用者管理是基于單個庫的管理,他的管理政策大概如下
如果驗證了admin庫的賬戶,那麼所有的庫都可以通路
如果驗證了非admin庫的賬戶,那麼此權限隻能通路目前庫下的資料
步驟建議:
如果要對資料庫進行賬戶設定,最好我們首先不要開啟資料庫驗證,然後進入admin庫,建立密碼
退出添加 -auth 驗證重新開機mongodb然後使用admin庫的賬戶進行驗證,如果通過那麼進入其它庫進行賬戶建立,完成後重新登入進行驗證
驗證如下:
啟動mongod
mongod.exe --dbpath=E:\mongodb\db -auth -auth 開啟使用者驗證,如果啟動沒有添加此參數那麼使用者驗證将失敗
首先進入admin庫
use admin
檢視目前資料的使用者
show collections 能傳回兩個表
添加admin庫的sa賬戶密碼為sa
db.addUser('sa','sa')
ctrl+c 退出目前登入
重新登入并進入admin庫和test庫檢查是否能夠查詢目前表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<code>> use admin</code>
<code>switched </code><code>to</code> <code>db admin</code>
<code>> show collections</code>
<code>Mon Oct 13 17:11:01 uncaught exception: error: {</code>
<code> </code><code>"$err"</code> <code>: </code><code>"unauthorized db:admin lock type:-1 client:127.0.0.1"</code><code>,</code>
<code> </code><code>"code"</code> <code>: 10057</code>
<code>}</code>
<code>> use test</code>
<code>Mon Oct 13 17:13:51 uncaught exception: error: {</code>
<code> </code><code>"$err"</code> <code>: </code><code>"unauthorized db:test lock type:-1 client:127.0.0.1"</code><code>,</code>
驗證admin庫裡面的sa賬戶是否能夠檢視admin庫和test庫的資訊
<code>> db.auth(</code><code>'sa'</code><code>,</code><code>'sa'</code><code>)</code>
<code>1</code>
<code>system.indexes</code>
<code>system.users</code>
<code>switched </code><code>to</code> <code>db test</code>
<code>></code>
進入test庫并建立使用者test密碼test
15
16
17
<code>> db.addUser(</code><code>'test'</code><code>,</code><code>'test'</code><code>)</code>
<code>{</code>
<code> </code><code>"updatedExisting"</code> <code>: </code><code>true</code><code>,</code>
<code> </code><code>"n"</code> <code>: 1,</code>
<code> </code><code>"connectionId"</code> <code>: 10,</code>
<code> </code><code>"err"</code> <code>: </code><code>null</code><code>,</code>
<code> </code><code>"ok"</code> <code>: 1</code>
<code> </code><code>"_id"</code> <code>: ObjectId(</code><code>"543b80be1d60b11044c2fc59"</code><code>),</code>
<code> </code><code>"user"</code> <code>: </code><code>"test"</code><code>,</code>
<code> </code><code>"readOnly"</code> <code>: </code><code>false</code><code>,</code>
<code> </code><code>"pwd"</code> <code>: </code><code>"a6de521abefc2fed4f5876855a3484f5"</code>
ctrl+c退出重新登入,驗證test賬戶能夠通路test庫和admin庫
<code>> db.auth(</code><code>'test'</code><code>,</code><code>'test'</code><code>)</code>
<code>Mon Oct 13 17:21:06 uncaught exception: error: {</code>
驗證admin庫的admin帳号,看是否能檢視admin庫的資訊
PS:當驗證使用者的時候,如果傳回1證明有此使用者,如果傳回0證明沒有此使用者 如:
當主從也是用使用者驗證來同步的情況下,要在master和slave上設定同一使用者同一密碼:
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<code>D:\mongodb\bin>mongo.exe 127.0.0.1:27018</code>
<code>MongoDB shell version: 2.0.9</code>
<code>connecting </code><code>to</code><code>: 127.0.0.1:27018/test</code>
<code>> db.addUser(</code><code>'root'</code><code>,</code><code>'123'</code><code>)</code>
<code>{ </code><code>"n"</code> <code>: 0, </code><code>"connectionId"</code> <code>: 1, </code><code>"err"</code> <code>: </code><code>null</code><code>, </code><code>"ok"</code> <code>: 1 }</code>
<code> </code><code>"user"</code> <code>: </code><code>"root"</code><code>,</code>
<code> </code><code>"pwd"</code> <code>: </code><code>"c2eb464922307de3bc3aaf9593f1d49b"</code><code>,</code>
<code> </code><code>"_id"</code> <code>: ObjectId(</code><code>"543cca62a23db6161efcdf78"</code><code>)</code>
<code>> use </code><code>local</code>
<code>switched </code><code>to</code> <code>db </code><code>local</code>
<code>> db.addUser(</code><code>'repl'</code><code>,</code><code>'123'</code><code>)</code>
<code> </code><code>"user"</code> <code>: </code><code>"repl"</code><code>,</code>
<code> </code><code>"pwd"</code> <code>: </code><code>"f544158855b8fbf525ce926d8605a348"</code><code>,</code>
<code> </code><code>"_id"</code> <code>: ObjectId(</code><code>"543cca6aa23db6161efcdf79"</code><code>)</code>
<code>> show dbs;</code>
<code>admin 0.078125GB</code>
<code>local</code> <code>0.078125GB</code>
<code>> bye</code>
<code>D:\mongodb\bin>mongo.exe 127.0.0.1:27017</code>
<code>connecting </code><code>to</code><code>: 127.0.0.1:27017/test</code>
<code>> show dbs</code>
<code>Tue Oct 14 15:04:16 uncaught exception: listDatabases failed:{ </code><code>"errmsg"</code> <code>: </code><code>"need to login"</code><code>, </code><code>"ok"</code> <code>: 0 }</code>
<code>> db.auth(</code><code>'root'</code><code>,</code><code>'123'</code><code>)</code>
<code>0</code>
<code>local</code> <code>12.072265625GB</code>
<code>test (empty)</code>
<code>Tue Oct 14 15:04:59 uncaught exception: listDatabases failed:{ </code><code>"errmsg"</code> <code>: </code><code>"need to login"</code><code>, </code><code>"ok"</code> <code>: 0 }</code>
<code>> use sean</code>
<code>switched </code><code>to</code> <code>db sean</code>
<code>> db.addUser(</code><code>'sean'</code><code>,</code><code>'123'</code><code>)</code>
<code>Tue Oct 14 15:05:44 uncaught exception: error {</code>
<code> </code><code>"$err"</code> <code>: </code><code>"unauthorized db:sean lock type:-1 client:127.0.0.1"</code><code>,</code>
<code>Tue Oct 14 15:06:26 uncaught exception: listDatabases failed:{ </code><code>"errmsg"</code> <code>: </code><code>"need to login"</code><code>, </code><code>"ok"</code> <code>: 0 }</code>
<code>Tue Oct 14 15:06:30 uncaught exception: listDatabases failed:{ </code><code>"errmsg"</code> <code>: </code><code>"need to login"</code><code>, </code><code>"ok"</code> <code>: 0 }</code>
<code>sean 0.078125GB</code>
<code>> show dbsbye</code>
<code>> db.auth(</code><code>'sean'</code><code>,</code><code>'123'</code><code>)</code>
本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/1563383,如需轉載請自行聯系原作者