MongoDB:使用者認證
MongoDB 安裝後預設不啟用認證,也就是說在本地可以通過 mongo 命令不輸入使用者名稱密碼,
直接登陸到資料庫,下面介紹下啟用 mongodb 使用者認證,詳細如下:
啟用 mongodb 認證只需要在啟動 mongod 服務時配置 auth 引數成 'true'即可可 ,在配置
引數前先新增超級使用者。
疑問:
一。在開啟--auth之後,如果需要新增新資料庫怎麼操作?
1.先關閉原來的服務,然後使用不含--auth的方式登入。此時就可以以匿名的方式登入了!
2.登入後建立資料庫,然後給資料庫中新增使用者。
二。開啟--auth之後,怎樣登入mongo shell?
具體內容參考幫助文件:
一 啟用認證
--1.1 增加管理使用者
備註:在 admin 庫中增加的使用者為超級使用者,許可權最大,可以訪問所有庫。
--1.2 增加普通使用者
--1.3 配置 auth 引數
vim /database/mongodb/data/mongodb_27017.conf,增加 " auth = true ” 引數
fork = true
bind_ip = 127.0.0.1
port = 27017
quiet = true
dbpath = /database/mongodb/data/
logpath = /var/applog/mongo_log/mongo.log
logappend = true
journal = true
auth = true
備註:增加 “auth = true” 配置。
--1.4 重啟 mongodb
--1.5 測試 skytf 帳號
備註:從上看出, skytf 使用者的認證已生效,並且能檢視資料庫 skytf 裡的集合,但不能執行 “show dbs”
命令;並且能連線資料庫 test ,但沒有許可權執行“show collections” 命令。
二 切換使用者
--2.1 在普通庫中切換成 root 使用者
備註:在普通庫中切換成超級使用者失敗,超級使用者需要在 admin 庫中切換才能生效。
--2.2 在 admin 庫中切換成 root 使用者
備註:在 admin 庫中切換成超級使用者成功。
三 新增只讀帳號
--3.1 增加只讀帳號
備註:只需在 addUser 命令中增加第三個引數,並指定為“true” ,即可建立只讀帳號。
--3.2 測試
備註:以只讀帳號 skytf_select 登陸庫 skytf,有許可權執行查詢操作,沒有許可權執行插入操作;
四 附 命令參考
--4.1 db.addUser
Parameters:
username (string) – Specifies a new username.
password (string) – Specifies the corresponding password.
readOnly (boolean) – Optional. Restrict a user to read-privileges only. Defaults to false.
Use this function to create new database users, by specifying a username and password as arguments
to the command. If you want to restrict the user to have only read-only privileges, supply a true third
argument; however, this defaults to false。
--4.2 db.auth
Parameters:
username (string) – Specifies an existing username with access privileges for this database.
password (string) – Specifies the corresponding password.
Allows a user to authenticate to the database from within the shell. Alternatively use mongo
--username and --password to specify authentication credentials.
五 參考
http://docs.mongodb.org/manual/tutorial/control-access-to-mongodb-with-authentication/
http://docs.mongodb.org/manual/administration/security/
http://blog.163.com/dazuiba_008/blog/static/36334981201110311534143/
直接登陸到資料庫,下面介紹下啟用 mongodb 使用者認證,詳細如下:
啟用 mongodb 認證只需要在啟動 mongod 服務時配置 auth 引數成 'true'即可可 ,在配置
引數前先新增超級使用者。
疑問:
一。在開啟--auth之後,如果需要新增新資料庫怎麼操作?
1.先關閉原來的服務,然後使用不含--auth的方式登入。此時就可以以匿名的方式登入了!
2.登入後建立資料庫,然後給資料庫中新增使用者。
二。開啟--auth之後,怎樣登入mongo shell?
- mongo admin -uroot -p
具體內容參考幫助文件:
- mongo -help
一 啟用認證
--1.1 增加管理使用者
- > use admin;
- switched to db admin
- > db.addUser('root','123456');
- {
- "user" : "root",
- "readOnly" : false,
- "pwd" : "34e5772aa66b703a319641d42a47d696",
- "_id" : ObjectId("50ad456a0b12589bdc45cf92")
- }
- > db.system.users.find();
- { "_id" : ObjectId("50ad6ecda579c47efacf811b"), "user" : "root", "readOnly" : false, "pwd" : "34e5772aa66b703a319641d42a47d696" }
備註:在 admin 庫中增加的使用者為超級使用者,許可權最大,可以訪問所有庫。
--1.2 增加普通使用者
- > use skytf;
- switched to db skytf
- > db.addUser('skytf','skytf');
- {
- "user" : "skytf",
- "readOnly" : false,
- "pwd" : "8c438fc9e2031577cea03806db0ee137",
- "_id" : ObjectId("50ad45dd0b12589bdc45cf93")
- }
- > db.system.users.find();
- { "_id" : ObjectId("50ad6ef3a579c47efacf811c"), "user" : "skytf", "readOnly" : false, "pwd" : "8c438fc9e2031577cea03806db0ee137" }
--1.3 配置 auth 引數
vim /database/mongodb/data/mongodb_27017.conf,增加 " auth = true ” 引數
fork = true
bind_ip = 127.0.0.1
port = 27017
quiet = true
dbpath = /database/mongodb/data/
logpath = /var/applog/mongo_log/mongo.log
logappend = true
journal = true
auth = true
備註:增加 “auth = true” 配置。
--1.4 重啟 mongodb
- [mongo@redhatB data]$ ps -ef | grep mongo
- root 10887 10859 0 04:47 pts/0 00:00:00 su - mongo
- mongo 10889 10887 0 04:47 pts/0 00:00:00 -bash
- root 10984 10964 0 04:53 pts/1 00:00:00 su - mongo
- mongo 10986 10984 0 04:53 pts/1 00:00:00 -bash
- mongo 12749 1 0 07:54 ? 00:00:01 mongod -f /database/mongodb/data/mongodb_27017.conf
- mongo 13035 10986 13 08:21 pts/1 00:00:00 ps -ef
- mongo 13036 10986 0 08:21 pts/1 00:00:00 grep mongo
- [mongo@redhatB data]$ kill 12749
- [mongo@redhatB data]$ mongod -f /database/mongodb/data/mongodb_27017.conf
- forked process: 13042
- all output going to: /var/applog/mongo_log/mongo.log
--1.5 測試 skytf 帳號
- [mongo@redhatB data]$ mongo 127.0.0.1/skytf -u skytf -p
- MongoDB shell version: 2.2.1
- Enter password:
- connecting to: 127.0.0.1/skytf
- Error: { errmsg: "auth fails", ok: 0.0 }
- Thu Nov 22 08:23:11 uncaught exception: login failed
- exception: login failed
- [mongo@redhatB data]$ mongo 127.0.0.1/skytf -u skytf -p
- MongoDB shell version: 2.2.1
- Enter password:
- connecting to: 127.0.0.1/skytf
- > show collections;
- system.indexes
- system.users
- test_1
- test_2
- test_3
- test_4
- things
- things_1
- > db.test_5.find();
- { "_id" : ObjectId("50ad7177d114dcf18a8bb220"), "id" : 1 }
- > show dbs;
- Thu Nov 22 08:24:03 uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }
- > use test;
- switched to db test
- > show collections;
- Thu Nov 22 09:01:32 uncaught exception: error: {
- "$err" : "unauthorized db:test ns:test.system.namespaces lock type:0 client:127.0.0.1",
- "code" : 10057
備註:從上看出, skytf 使用者的認證已生效,並且能檢視資料庫 skytf 裡的集合,但不能執行 “show dbs”
命令;並且能連線資料庫 test ,但沒有許可權執行“show collections” 命令。
二 切換使用者
--2.1 在普通庫中切換成 root 使用者
- > use test;
- switched to db test
- > db.auth('root','123456');db.auth('root','123456');
- Error: { errmsg: "auth fails", ok: 0.0 }
- 0
備註:在普通庫中切換成超級使用者失敗,超級使用者需要在 admin 庫中切換才能生效。
--2.2 在 admin 庫中切換成 root 使用者
- > use admin;
- switched to db admin
- > db.auth('root','123456');
- 1
備註:在 admin 庫中切換成超級使用者成功。
三 新增只讀帳號
--3.1 增加只讀帳號
- > db.addUser('skytf_select','skytf_select',true);
- {
- "user" : "skytf_select",
- "readOnly" : true,
- "pwd" : "e344f93a69f20ca9f3dfbc40da4a3082",
- "_id" : ObjectId("50ad71c7d114dcf18a8bb221")
- }
- > db.system.users.find();db.system.users.find();
- { "_id" : ObjectId("50ad6ef3a579c47efacf811c"), "user" : "skytf", "readOnly" : false, "pwd" : "8c438fc9e2031577cea03806db0ee137" }
- { "_id" : ObjectId("50ad71c7d114dcf18a8bb221"), "user" : "skytf_select", "readOnly" : true, "pwd" : "e344f93a69f20ca9f3dfbc40da4a3082" }
備註:只需在 addUser 命令中增加第三個引數,並指定為“true” ,即可建立只讀帳號。
--3.2 測試
- > db.addUser('skytf_select','skytf_select',true);
- {
- "user" : "skytf_select",
- "readOnly" : true,
- "pwd" : "e344f93a69f20ca9f3dfbc40da4a3082",
- "_id" : ObjectId("50ad71c7d114dcf18a8bb221")
- }
- > db.system.users.find();db.system.users.find();
- { "_id" : ObjectId("50ad6ef3a579c47efacf811c"), "user" : "skytf", "readOnly" : false, "pwd" : "8c438fc9e2031577cea03806db0ee137" }
- { "_id" : ObjectId("50ad71c7d114dcf18a8bb221"), "user" : "skytf_select", "readOnly" : true, "pwd" : "e344f93a69f20ca9f3dfbc40da4a3082" }
備註:以只讀帳號 skytf_select 登陸庫 skytf,有許可權執行查詢操作,沒有許可權執行插入操作;
四 附 命令參考
--4.1 db.addUser
Parameters:
username (string) – Specifies a new username.
password (string) – Specifies the corresponding password.
readOnly (boolean) – Optional. Restrict a user to read-privileges only. Defaults to false.
Use this function to create new database users, by specifying a username and password as arguments
to the command. If you want to restrict the user to have only read-only privileges, supply a true third
argument; however, this defaults to false。
--4.2 db.auth
Parameters:
username (string) – Specifies an existing username with access privileges for this database.
password (string) – Specifies the corresponding password.
Allows a user to authenticate to the database from within the shell. Alternatively use mongo
--username and --password to specify authentication credentials.
五 參考
http://docs.mongodb.org/manual/tutorial/control-access-to-mongodb-with-authentication/
http://docs.mongodb.org/manual/administration/security/
http://blog.163.com/dazuiba_008/blog/static/36334981201110311534143/
相關文章
- 【Mongo】mongodb的使用者認證MongoDB
- MongoDB身份認證機制揭秘!MongoDB
- laravel使用者認證Laravel
- Laravel 5.1使用者認證Laravel
- Laravel 使用者認證 AuthLaravel
- Django的使用者認證元件Django元件
- 【Web總結】使用者認證Web
- 06.Django-使用者認證Django
- Jenkins API使用者認證方式JenkinsAPI
- 使用 JWT 認證使用者身份JWT
- laravel使用者認證圖解Laravel圖解
- MongoDB資料庫授權認證的實現JRMYMongoDB資料庫
- Python使用LDAP做使用者認證PythonLDA
- PHP 使用 jwt 使用者身份認證PHPJWT
- KubeCube 使用者管理與身份認證
- Spring認證中國教育管理中心-Spring Data MongoDB教程SpringMongoDB
- Laravel+JWT 多表(or多使用者)認證LaravelJWT
- 訪問使用者中心實現認證
- Laravel 使用者認證快速指南筆記Laravel筆記
- Laravel Passport 多表使用者認證踩坑LaravelPassport
- 為Kubernetes叢集新增使用者認證
- laravel8 jwt多使用者認證LaravelJWT
- Laravel 單元測試認證使用者Laravel
- Laravel使用JWT來建立使用者認證APILaravelJWTAPI
- laravel5.1 — 實現多使用者認證Laravel
- Express + JWT使用者認證最輕實踐ExpressJWT
- 在身份認證後建立使用者物件ICurrentUser物件
- Hyperf 框架使用 JWT 進行使用者認證框架JWT
- Django使用者認證系統(一)User物件Django物件
- express實現JWT使用者認證系統ExpressJWT
- HarmonyOS Next 使用者認證系統全解析
- Django之使用者認證模組詳解Django
- 解決 Laravel JWT 多表認證時獲取不到當前認證使用者的問題LaravelJWT
- MongoDB副本集keyFile認證檔案必須滿足的條件MongoDB
- [Laravel 8 使用者認證] Jetstream 之 如何自定義登入驗證Laravel
- HarmonyOS Next 使用者認證安全策略深度揭秘
- HarmonyOS Next 使用者認證系統新全解析
- nginx配置kibana訪問使用者名稱和密碼認證、及無認證訪問配置Nginx密碼
- 認證授權方案之JwtBearer認證JWT