標籤: mongodbhtml
2016年12月25日 22:04:04 7906人閱讀 評論(5) 收藏 舉報mongodb
分類:shell
mongodb(30) 數據庫
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。安全
mongodb 3.4
window7函數
[root@snails ~]# ps -ef|grep mongod [root@snails ~]# mongo --host=127.0.0.1 --port=27017 MongoDB shell version: 3.2.7 connecting to: 127.0.0.1:27017/test > show dbs #顯示數據庫列表 > show collections #顯示當前數據庫中的集合(相似關係數據庫中的表) > show users #顯示用戶 > use <db name> #切換當前數據庫,若是數據庫不存在則建立數據庫。 > db.help() #顯示數據庫操做命令,裏面有不少的命令 > db.foo.help() #顯示集合操做命令,一樣有不少的命令,foo指的是當前數據庫下,一個叫foo的集合,並不是真正意義上的命令 > db.foo.find() #對於當前數據庫中的foo集合進行數據查找(因爲沒有條件,會列出全部數據) > db.foo.find( { a : 1 } ) #對於當前數據庫中的foo集合進行查找,條件是數據中有一個屬性叫a,且a的值爲1
MongoDB沒有建立數據庫的命令,但有相似的命令。 如:若是你想建立一個「myTest」的數據庫,先運行use
myTest命令,以後就作一些操做(如:db.createCollection(‘user’)),這樣就能夠建立一個名叫「myTest」的數據庫。學習
> db.dropDatabase() #刪除當前使用數據庫 > db.cloneDatabase("127.0.0.1") #將指定機器上的數據庫的數據克隆到當前數據庫 > db.copyDatabase("mydb", "temp", "127.0.0.1") #將本機的mydb的數據複製到temp數據庫中 > db.repairDatabase() #修復當前數據庫 > db.getName() #查看當前使用的數據庫,也能夠直接用db > db.stats() #顯示當前db狀態 > db.version() #當前db版本 > db.getMongo() #查看當前db的連接機器地址 > db.serverStatus() #查看數據庫服務器的狀態
MongoDB安裝完成後,默認是不須要輸入用戶名密碼便可登陸的,可是每每數據庫方面咱們會出於安全性的考慮而設置用戶名密碼,本篇文章主要介紹了MongoDB添加管理員/普通用戶的方法。ui
In the admin database, add a user with the userAdminAnyDatabase role.
For example, the following creates the user myUserAdmin in the admin
database:this
在admin數據庫中,添加一個用戶並賦予userAdminAnyDatabase
角色。
例如,下面是在admin數據庫中建立一個名爲myUserAdmin
用戶。
注意: The database where you create the user (in this example, admin) is the user’s authentication database. Although the user would authenticate to this database, the user can have roles in other databases; i.e. the user’s authentication database does not limit the user’s privileges.
注意:你建立用戶的這個數據庫(這裏就是admin數據庫)是用戶認證數據庫。
儘管用戶是在這個數據庫認證,而用戶又有其餘數據庫的角色;即,用戶認證數據庫不限制用戶權限。
在window
管理員下啓動cmd
,而且鏈接上mongodb
,
鏈接命令:
D:\Program Files\MongoDB\Server\3.4\bin>mongo.exe
建立用戶命令:
use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) #結果 Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
執行如下命令,看看結果
> show users > db.system.users.find()
window中:
D:\Program Files\MongoDB\Server\3.4\mongod.cfg
這個配置文件是我本身手動配置,關於mongodb配置,能夠參考:
mongodb3.4的安裝和配置
在配置文件中添加.
security: authorization: enabled
所有配置:
systemLog: destination: file path: D:\mongodbdata\log\mongod.log logAppend: true storage: journal: enabled: true dbPath: D:\mongodbdata\db net: bindIp: 127.0.0.1 port: 27017 security: authorization: enabled
liunx:
[root@snails ~]# echo "auth = true" >> /root/mongodb/bin/mongodb.conf [root@snails ~]# systemctl restart systemd-mongodb
接着就是重啓mongod
實例。說明了就是重啓mongodb服務。
D:\Program Files\MongoDB\Server\3.4\bin>mongo.exe MongoDB shell version v3.4.1 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.1 > use admin switched to db admin > db.auth('myUserAdmin', 'abc123') 1 > show dbs admin 0.000GB local 0.000GB
Once authenticated as the user administrator, use db.createUser() to create additional users. You can assign any built-in roles or user-defined roles to the users.
一旦通過認證的用戶管理員,可使用
db.createUser()
去建立額外的用戶。
你能夠分配mongodb內置的角色或用戶自定義的角色給用戶。The myUserAdmin user only has privileges to manage users and roles. As myUserAdmin, if you attempt to perform any other operations, such as read from a foo collection in the test database, MongoDB returns an error.
這個
myUserAdmin
用戶僅僅只有特權去管理用戶和角色,myUserAdmin
,若是你試圖執行其餘任何操做,例如在test數據庫中的foo集合中去讀數據,mongodb將返回錯誤。注意:The database where you create the user (in this example, test) is that user’s authentication database. Although the user would authenticate to this database, the user can have roles in other databases; i.e. the user’s authentication database does not limit the user’s privileges.
你建立用戶的數據庫(這裏就是test數據庫)是該用戶認證數據庫。儘管用戶認證是這個數據庫,用戶依然能夠有其餘數據庫的角色。即用戶認證數據庫不限制用戶權限。
建立普通用戶:
>use test > db.createUser( ... { ... user:"test1", ... pwd: "test1", ... roles: [{ role: "readWrite", db: "test"}] ... } ... ) Successfully added user: { "user" : "test1", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } > exit bye D:\Program Files\MongoDB\Server\3.4\bin>mongo.exe MongoDB shell version v3.4.1 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.1 > use test switched to db test > db.auth('test1','test1') 1
window中的cmd中執行:
use admin db.createUser( { user: "root", pwd: "root", roles: [ { role: "root", db: "admin" } ] } );
內建的角色
數據庫用戶角色:read、readWrite;
數據庫管理角色:dbAdmin、dbOwner、userAdmin;
集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
備份恢復角色:backup、restore;
全部數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級用戶角色:root // 這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
內部角色:__system
角色說明:
Read:容許用戶讀取指定數據庫
readWrite:容許用戶讀寫指定數據庫
dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile
userAdmin:容許用戶向system.users集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級帳號,超級權限
官網參考地址:
http://docs.mongoing.com/manual-zh/tutorial/enable-authentication.html