MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。git
MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是它支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。mongodb
官網:https://www.mongodb.com/shell
MongoDB的安裝教程在官網能夠找到。數據庫
咱們能夠下載安裝包進行安裝或者使用yum軟件包管理。json
因爲咱們公司要使用阿里雲提供的MongoDB因此選擇3.4版本進行測試windows
3.4版本yum安裝說明:https://docs.mongodb.com/v3.4/tutorial/install-mongodb-on-red-hat/session
安裝說明寫的很是詳細,在這裏我也沒有必要複述了。數據結構
修改目錄app
MongoDB默認狀況下會將數據文件存儲在 /var/lib/mongo 目錄下,日誌文件存儲在 /var/log/mongodb 下。你也能夠在 /etc/mongod.conf配置文件中指定數據文件和日誌文件目錄。分佈式
# where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # Where and how to store data. storage: dbPath: /var/lib/mongo journal: enabled: true
建立管理員帳戶
只能在admin庫中建立root用戶
> use admin switched to db admin > db.createUser({user:"root",pwd:"111111",roles:["root"]}) Successfully added user: { "user" : "root", "roles" : [ "root" ] }
登錄認證
默認狀況下咱們是不須要使用用戶名密碼登錄的,若是想要啓用認證就須要修改配置文件激活認證。
security: authorization: enabled
遠程訪問
配置文件中的bindIp默認127.0.0.1只監聽本機,改成0.0.0.0監聽全部外網ip。
# network interfaces net: port: 27017 bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.
啓動
sudo service mongod start
開機啓動
sudo chkconfig mongod on
重啓
sudo service mongod restart
中止
sudo service mongod stop
查看日誌
[root@demo ~]# tail -n 100 -f /var/log/mongodb/mongod.log 2018-06-22T15:51:17.381+0800 I CONTROL [main] ***** SERVER RESTARTED ***** 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] MongoDB starting : pid=28156 port=27017 dbpath=/var/lib/mongo 64-bit host=demo 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] db version v3.4.15 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] git version: 52e5b5fbaa3a2a5b1a217f5e647b5061817475f9 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] allocator: tcmalloc 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] modules: none 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] build environment: 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] distmod: rhel70 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] distarch: x86_64 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] target_arch: x86_64 2018-06-22T15:51:17.388+0800 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, storage: { dbPath: "/var/lib/mongo", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } 2018-06-22T15:51:17.419+0800 I STORAGE [initandlisten] 2018-06-22T15:51:17.419+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 2018-06-22T15:51:17.419+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2018-06-22T15:51:17.419+0800 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=406M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),verbose=(recovery_progress), 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.585+0800 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongo/diagnostic.data' 2018-06-22T15:51:17.634+0800 I INDEX [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" } 2018-06-22T15:51:17.634+0800 I INDEX [initandlisten] building index using bulk method; build may temporarily use up to 500 megabytes of RAM 2018-06-22T15:51:17.636+0800 I INDEX [initandlisten] build index done. scanned 0 total records. 0 secs 2018-06-22T15:51:17.636+0800 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.4 2018-06-22T15:51:17.637+0800 I NETWORK [thread1] waiting for connections on port 27017
後臺管理shell
在後臺管理shell中咱們能夠經過執行命令的方式,完成建立數據庫和數據維護等工做。
[root@demo bin]# cd /usr/bin [root@demo bin]# ./mongo MongoDB shell version v3.4.15 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.15 Server has startup warnings: 2018-06-22T15:51:17.419+0800 I STORAGE [initandlisten] 2018-06-22T15:51:17.419+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 2018-06-22T15:51:17.419+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2018-06-22T15:51:17.551+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2018-06-22T15:51:17.552+0800 I CONTROL [initandlisten] >
Mongo管理工具除了官方提供的MongoDB Compass外,在windows系統下可使用MongoVUE (付費),IOS系統下使用Robo 3T(免費推薦 https://robomongo.org/)。