[TOC]
# 開啟用戶驗證
## 添加用戶
啟動mongodb:
mongod
啟動mongodb shell
mongo
添加用戶:
~~~
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
~~~
## 更改配置文件
在配置文件中將
#security:
中的#去掉,并在其下一行,空兩個空格,加上authorization: enabled,如下
~~~
security:
authorization: enabled
~~~
注意:authorization: enabled中冒號后加一個空格,這是yaml語法所要求的
## 重啟mongodb數據庫
~~~
sudo service mongod restart
~~~
注意:命令中是mongod,不是mongodb
設置遠程連接
注意:老版本的圖形界面管理軟件可能不支持新版本的數據庫,測試之前請保證軟件是可用的
在配置文件中將
bindIp: 127.0.0.1
注釋掉(即在句首加#)
#bindIp: 127.0.0.1
重啟數據庫
~~~
sudo service mongod restart
~~~
更改數據目錄
默認的數據存儲目錄是/var/lib/mongodb,假設我們的目的路徑是/home/mongodb
關閉數據庫
~~~
sudo service mongod stop
~~~
在配置文件中將storage.dbPath項設置為目的路徑,修改后如下
~~~
storage:
dbPath: /home/mongodb
~~~
將原目錄下的文件復制到新目錄中:
~~~
sudo cp -r /var/bin/mongodb/* /home/mongodb/
~~~
將mongod.lock文件刪除后啟動數據庫
~~~
sudo rm /home/mongodb/mongod.lock
sudo service mongod start
~~~
測試遠程連接
注意:
當你的mongo命令報錯,連接失敗時,請嘗試刪除數據存儲目錄下的mongod.lock文件后,重啟mongodb數據庫
# 配置權限
我的mongodb是通過brew install mongod安裝的,所以按默認配置啟動服務mongod --config /usr/local/etc/mongod.conf,此命令不是掛起的,所以我們另開窗口執行mongo,連接到admin庫,在admin庫添加超級用戶:
~~~
Eugene-mac:~ Eugene$ mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
Server has startup warnings:
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten]
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten]
> show dbs
admin 0.000GB
local 0.000GB
test 0.000GB
> use admin
switched to db admin
> db.createUser({
user: 'admin',
pwd: 'admin',
roles: [ { role: "__system", db: "admin" } ]
})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "__system",
"db" : "admin"
}
]
}
>
~~~
這樣,超級用戶就建成了,通過這個用戶可以對任何庫進行任何超做。但是利用這個超級用戶來連接數據庫顯然是不安全的,所以我們可以對每個庫進行權限配置。接下來就來配置其他庫的用戶權限,比如現在有一個test測試庫,我配置一個讀寫權限的用戶:
~~~
> use admin
switched to db admin
> db.createUser({
user: 'testUser',
pwd: 'testPwd',
roles: [ { role: 'readWrite', db: 'test'} ]
})
Successfully added user: {
"user" : "testUser",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
~~~
這樣,這個用戶名為testUser密碼為testPwd的用戶就建成了,如果我們用工具mongoose直連mongodb的話也是很方便的。
~~~
mongoose.connect('mongodb://testUser:testPwd@localhost:27017/test', {
auth: {
authdb: 'admin'
}
}, function(err){
if (err) {
console.error(err);
} else {
cosnole.log('連接數據庫成功')
}
});
~~~
以上是連接test庫的方式,如果要使用之前建的超級用戶來訪問test庫的話,只要修改url中的賬號和密碼就行啦。(注意一定要訪問的時候要對admin庫驗證,即authdb: 'admin')。
~~~
db.auth("admin","admin")
~~~
# 權限的角色

還有個root和__system這一般不對外開放
# 創建用戶
創建語法
createUser(2.6之前為addUser)
語法
~~~
{user:"<name>",
pwd:"<password>",
customData:{<any information>},
roles:[{role:"<role>",db:"<database>"}]
}
~~~
角色類型
內建類型(read,readWrite,dbAdmin,dbOwner,userAdmin)
- SQL
- 名詞
- mysql
- 初識mysql
- 備份和恢復
- 存儲引擎
- 數據表損壞和修復
- mysql工具
- 數據庫操作
- 增
- 刪
- 改
- 查
- 數據類型
- 整數類型
- 小數類型
- 日期時間類型
- 字符和文本型
- enum類型
- set類型
- 時間類型
- null與not null和null與空值''的區別
- 數據表操作
- 創建
- 索引
- 約束
- 表選項列表
- 表的其他語句
- 視圖
- sql增刪改查
- sql增
- sql刪
- sql改
- sql查
- sql語句練習
- 連接查詢和更新
- 常用sql語句集錦
- 函數
- 字符函數
- 數值運算符
- 比較運算符與函數
- 日期時間函數
- 信息函數
- 聚合函數
- 加密函數
- null函數
- 用戶權限管理
- 用戶管理
- 權限管理
- pdo
- 與pdo相關的幾個類
- 連接數據庫
- 使用
- pdo的錯誤處理
- pdo結果集對象
- pdo結果集對象常用方法
- pdo預處理
- 常用屬性
- mysql編程
- 事務
- 語句塊
- mysql中的變量
- 存儲函數
- 存儲過程
- 觸發器
- mysql優化
- 存儲引擎
- 字段類型
- 三范式和逆范式
- 索引
- 查詢緩存
- limit分頁優化
- 分區
- 介紹
- 分區算法
- list分區
- range范圍
- Hash哈希
- key鍵值
- 分區管理
- 特別注意
- 分表
- 數據碎片與維護
- innodb表壓縮
- 慢查詢
- explain執行計劃
- count和max,groupby優化
- 子查詢優化
- mysql鎖機制
- 介紹
- 演示
- 總結
- 樂觀鎖和悲觀鎖
- 扛得住的mysql
- 實例和故事
- 系統參數優化
- mysql體系結構
- mysql基準測試
- 索引
- mysql的復制
- win配置MySQL主從
- mysql5.7新特性
- 常見問題
- general log
- 忘記密碼
- uodo log與redo log
- 事務隔離級別
- mysql8密碼登錄
- explain
- 高效的Tree表
- on delete cascade 總結
- mongod
- 簡介
- 集合文檔操作語句
- 增刪改查
- 索引
- 數據導入和導出
- 主從復制
- php7操作mongod
- 權限管理
- redis
- redis簡介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件總結
- 外網連接
- 持久化
- RDB備份方式保存數據
- AOF備份方式保存數據
- 總結
- win安裝redis和sentinel部署
- 事務
- Sentinel模式配置
- 分布式鎖
- 管道
- php中redis代碼
- 發布訂閱
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置說明
- 啟動
- kibana
- kibana下載
- kibana配置文件
- kibana常用功能
- 常用術語
- Beats
- Beats簡介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架構
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 單模式下API增刪改查
- mget獲取多個文檔
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查詢
- Filter過濾
- 組合查詢
- es配置文件
- es集群優化和管理
- logstash
- kibana
- es5.2
- 安裝
- 沖突處理
- 數據備份
- 缺陷不足
- 集群管理api
- 分布式事務
- CAP理論
- BASE模型
- 兩階段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 異步確保型
- 最大努力通知型
- 總結