mongodb資料庫中建立使用者命令

來源:互聯網
上載者:User

MongoDB的2進位安裝極其簡單,按照官方文檔的操作來,預設是沒有使用者認證的…運行效率雖然很高,未免

不太安全。

下面介紹如何使用auth方式來進行使用者認證(keyFile方式我還沒看..)

1) 不使用 –auth參數,啟動 mongodb
2) 建立 User Administrator.
mongodb裡面沒有root這種超級許可權無敵的使用者,但是有User Administrator,它可以管理其它使用者~~,但

是就沒有其它的特殊許可權了。
如果一個使用者有了userAdminAnyDatabase 許可權,它就成為了 User Administrator。

 代碼如下 複製代碼
USE admin;
或者 :
db = db.getSiblingDB('admin')

添加使用者

 代碼如下 複製代碼

db.addUser( { USER: "root",
              pwd: "123456",
              roles: [ "userAdminAnyDatabase" ] } )
 
查看admin庫裡面的全部使用者:
USE admin;
db.system.users.find();
{ "_id" : ObjectId("xxxxxx"), "pwd" : "xxxxxxxxxxxxxxxxxxxxxxxxxxx", "roles" : [ 

"userAdminAnyDatabase" ], "user" : "root" }

這樣就在admin庫中添加了一個名為root,密碼為123456的User Administrator。

3) 使用 –auth參數啟動mongodb

4) 使用User Administrator登入並完成認證。

 代碼如下 複製代碼

[root@yw-0-0 logs]# mongo  xxx.xxx.xx.xxx
MongoDB shell version: 2.2.3
connecting TO: xxx.xxx.xx.xxx/test
> USE admin;
switched TO db admin
#認證, 1表示成功
> db.auth("root", "123456");
1
#查看admin庫中全部使用者:
> db.system.users.find();
{ "_id" : ObjectId("xxxxxx"), "pwd" : "xxxxxxxxxxxxxxxxxxxxxxxxxxx", "roles" : [ 

"userAdminAnyDatabase" ], "user" : "root" }
>
#查看全部的表,會提示無許可權,因為我們建立的root使用者就只有使用者管理的許可權:
> SHOW TABLES;
Tue Sep 24 10:37:00 EXEC error: src/mongo/shell/query.js:128 error: {
        "$err" : "not authorized for query on cleanmaster.system.namespaces",
        "code" : 16550
}
throw "error: " + tojson( ret );

5) 建立其它使用者

使用者都是跟著庫走的,使用者資訊也會儲存到庫的system.users表裡面。
When adding a user to multiple databases, you must define the user for each database.

> USE cm;
#建立使用者cm,密碼123456, 許可權為readWrite和dbAdmin
> db.addUser( { USER: "cm",pwd: "123456",roles: [ "readWrite", "dbAdmin" ]} )
Tue Sep 24 10:53:51 EXEC error: src/mongo/shell/db.js:64 password can't be empty
throw "password can't be empty";
這個問題困擾了我好久啊...
後來發現用戶端是2.2.3,服務端是2.4.6........
換成最新的用戶端就ok了:
 

 代碼如下 複製代碼

> db.addUser( { user: "cm",pwd: "123456",roles: [ "readWrite", "dbAdmin" ]} )
{
        "USER" : "cm",
        "pwd" : "687312e8f13ef54ec5d213f4eadf1d98",
        "roles" : [
                "readWrite",
                "dbAdmin"
        ],
        "_id" : ObjectId("5241005872de6152c88ca17d")
}
 
> db.system.users.find();
{ "_id" : ObjectId("5241005872de6152c88ca17d"), "USER" : "cm", "pwd" :

"687312e8f13ef54ec5d213f4eadf1d98", "roles" : [  "readWrite",  "dbAdmin" ] }
> use cm
#使用新使用者認證:
> db.auth("cm","123456");
1
> show tables;
system.indexes
system.users

6) 修改密碼

 代碼如下 複製代碼

db = db.getSiblingDB('cm')
#修改新密碼為 1-6
db.changeUserPassword("cm", "1-6")

7) 後記

之所以寫這篇文章,是因為百度出來的資料都不靠譜啊!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.