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/
相關文章
- mongodb的使用者認證MongoDB
- 【Mongo】mongodb的使用者認證MongoDB
- 【Mongodb】使用者和認證許可權總結MongoDB
- 【Mongodb】使用者和認證 許可權總結MongoDB
- mongodb3.03開啟認證MongoDB
- laravel使用者認證Laravel
- mongodb叢集搭建及配置安全認證MongoDB
- Laravel 使用者認證 AuthLaravel
- Laravel 多使用者認證Laravel
- Laravel 5.1使用者認證Laravel
- 06.Django-使用者認證Django
- Django的使用者認證元件Django元件
- 【Web總結】使用者認證Web
- laravel使用者認證圖解Laravel圖解
- 使用 JWT 認證使用者身份JWT
- LNMP—Nginx的使用者認證LNMPNginx
- PHP 使用 jwt 使用者身份認證PHPJWT
- 學習 Lumen 使用者認證 (一)
- MongoDB資料庫授權認證的實現JRMYMongoDB資料庫
- 如何修改MongoDB3.0的資料庫認證機制MongoDB資料庫
- Laravel 使用者認證快速指南筆記Laravel筆記
- 訪問使用者中心實現認證
- Laravel+JWT 多表(or多使用者)認證LaravelJWT
- laravel8 jwt多使用者認證LaravelJWT
- Django之使用者認證模組詳解Django
- Python使用LDAP做使用者認證PythonLDA
- Laravel Passport 多表使用者認證踩坑LaravelPassport
- Laravel 單元測試認證使用者Laravel
- Django 使用者認證系統:註冊Django
- Spring認證中國教育管理中心-Spring Data MongoDB教程SpringMongoDB
- Hyperf 框架使用 JWT 進行使用者認證框架JWT
- Laravel使用JWT來建立使用者認證APILaravelJWTAPI
- laravel5.1 — 實現多使用者認證Laravel
- Django使用者認證系統(一)User物件Django物件
- express實現JWT使用者認證系統ExpressJWT
- Express + JWT使用者認證最輕實踐ExpressJWT
- 建站篇-使用者認證系統-開始
- Django 使用者認證系統:基本設定Django