21.26 mongodb介紹、 mongodb安裝、連接mongodb、mongodb用戶管理

21.26 mongodb介紹

l官網www.mongodb.com, 當前最新版3.4

lC++編寫,基於分佈式的,屬於NoSQL的一種

l在NoSQL中是最像關係型數據庫的

lMongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔、數組及文檔數組。

l關於JSON http://www.w3school.com.cn/json/index.asp

l因爲基於分佈式,所以很容易擴展

epel自帶的mongodb版本爲2.6,我們需要安裝3.4版本
官方安裝文檔https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

clipboard (1).png

clipboard.png 
cd /etc/yum.repos.d/

vim mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
[root@aminglinux-149 ~]# yum list |grep mongodb
[root@aminglinux-149 ~]# cd /etc/yum.repos.d/
[root@aminglinux-149 yum.repos.d]# vim mongodb-org-3.4.repo
[root@aminglinux-149 yum.repos.d]# yum list |grep mongodb//可以看到mongodb相關的rpm包
http://fedora.cs.nctu.edu.tw/epel/7/x86_64/repodata/c1ddcd6a3c6455e6d367639727ce3a67c45f2f91ae8621563d174d8a722eaf31-primary.xml.gz: [Errno 14] HTTP Error 404 - Not Found
正在嘗試其它鏡像。
To address this issue please refer to the below wiki article 

https://wiki.centos.org/yum-errors

If above article doesn't help to resolve this issue please use https://bugs.centos.org/.

http://my.fedora.ipserverone.com/epel/7/x86_64/repodata/de34af7e1d9f800981fa2af3a2cd888a3397d80ab50da8b91a4acee99512cdb7-updateinfo.xml.bz2: [Errno 14] HTTP Error 404 - Not Found
正在嘗試其它鏡像。
collectd-write_mongodb.x86_64             5.8.1-1.el7                  epel     
mongodb.x86_64                            2.6.12-6.el7                 epel     
mongodb-org.x86_64                        3.4.18-1.el7                 mongodb-org-3.4
mongodb-org-mongos.x86_64                 3.4.18-1.el7                 mongodb-org-3.4
mongodb-org-server.x86_64                 3.4.18-1.el7                 mongodb-org-3.4
mongodb-org-shell.x86_64                  3.4.18-1.el7                 mongodb-org-3.4
mongodb-org-tools.x86_64                  3.4.18-1.el7                 mongodb-org-3.4
mongodb-server.x86_64                     2.6.12-6.el7                 epel     
mongodb-test.x86_64                       2.6.12-6.el7                 epel     
nodejs-mongodb.noarch                     1.4.7-1.el7                  epel     
php-mongodb.noarch                        1.0.4-1.el7                  epel     
php-pecl-mongodb.x86_64                   1.1.10-1.el7                 epel     
poco-mongodb.x86_64                       1.6.1-3.el7                  epel     
syslog-ng-mongodb.x86_64                  3.5.6-3.el7                  epel   
[root@aminglinux-149 yum.repos.d]# yum install -y mongodb-org
ot@aminglinux-149 yum.repos.d]# yum install -y mongodb-org
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirror.bit.edu.cn
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 mongodb-org.x86_64.0.3.4.18-1.el7 將被 安裝
--> 正在處理依賴關係 mongodb-org-tools = 3.4.18,它被軟件包 mongodb-org-3.4.18-1.el7.x86_64 需要
--> 正在處理依賴關係 mongodb-org-shell = 3.4.18,它被軟件包 mongodb-org-3.4.18-1.el7.x86_64 需要
--> 正在處理依賴關係 mongodb-org-server = 3.4.18,它被軟件包 mongodb-org-3.4.18-1.el7.x86_64 需要
--> 正在處理依賴關係 mongodb-org-mongos = 3.4.18,它被軟件包 mongodb-org-3.4.18-1.el7.x86_64 需要
--> 正在檢查事務
---> 軟件包 mongodb-org-mongos.x86_64.0.3.4.18-1.el7 將被 安裝
---> 軟件包 mongodb-org-server.x86_64.0.3.4.18-1.el7 將被 安裝
---> 軟件包 mongodb-org-shell.x86_64.0.3.4.18-1.el7 將被 安裝
---> 軟件包 mongodb-org-tools.x86_64.0.3.4.18-1.el7 將被 安裝
已安裝:
  mongodb-org.x86_64 0:3.4.18-1.el7                                                     

作爲依賴被安裝:
  mongodb-org-mongos.x86_64 0:3.4.18-1.el7   mongodb-org-server.x86_64 0:3.4.18-1.el7  
  mongodb-org-shell.x86_64 0:3.4.18-1.el7    mongodb-org-tools.x86_64 0:3.4.18-1.el7   

完畢!

21.28 連接mongodb
systemctl start mongod //啓動服務

[root@aminglinux-149 yum.repos.d]# systemctl start mongod

1.jpg


在本機可以直接運行命令mongo進入到mongodb shell中

MongoDB shell version v3.4.18
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.18
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] 
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] 
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] 
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-11-19T16:58:05.058+0800 I CONTROL  [initandlisten] 
>

如果mongodb監聽端口並不是默認的27017,則在連接的時候需要加--port 選項,例如
mongo --port 27018
連接遠程mongodb,需要加--host,例如
mongo --host  127.0.0.1
如果設置了驗證,則在連接的時候需要帶用戶名和密碼
mongo -uusername -ppasswd --authenticationDatabase db //這個和MySQL挺像

指定ip和端口

21.29 mongodb用戶管理

use admin//需要切換到admin庫
db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "admin122", roles: [ { role: "root", db: "admin" } ] } )
user指定用戶,customData爲說明字段,可以省略,pwd爲密碼,roles指定用戶的角色,db指定庫名
use admin //切換到admin庫
db.system.users.find()  //列出所有用戶,需要切換到admin庫
show users  //查看當前庫下所有的用戶
db.dropUser('admin') //刪除用戶
若要用戶生效,還需要編輯啓動腳本vim /usr/lib/systemd/system/mongod.service,在OPTIONS=後面增--auth
重啓服務systemctl restart mongod
mongo -u "admin" -p "admin122" --authenticationDatabase "admin"

use db1
db.createUser( { user: "test1", pwd: "123aaa", roles: [ { role: "readWrite", db: "db1" }, {role: "read", db: "db2" } ] } )
test1用戶對db1庫讀寫,對db2庫只讀。
之所以先use db1,表示用戶在 db1 庫中創建,就一定要db1庫驗證身份,即用戶的信息跟隨隨數據庫。比如上述 test1雖然有 db2 庫的讀取權限,但是一定要先在db1庫進行身份驗證,直接訪問會提示驗證失敗。
use db2
db.auth("test1", "123aaa")

用戶角色:
Read:允許用戶讀取指定數據庫
readWrite:允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級賬號,超級權限

db.version()  //查看版本
use userdb  //如果庫存在就切換,不存在就創建
show dbs //查看庫,此時userdb並沒有出現,這是因爲該庫是空的,還沒有任何集合,只需要創建一個集合就能看到了
db.createCollection('clo1') //創建集合clo1,在當前庫下面創建
db.dropDatabase() //刪除當前庫,要想刪除某個庫,必須切換到那個庫下
db.stats()  //查看當前庫的信息
db.serverStatus()   //查看mongodb服務器的狀態


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章