新手小白Linux(Centos6.5)部署java web项目(mongodb4.0.2安装及相关操作)
紅帽企業或CentOS的Linux上安裝MongoDB的社區版:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
?
?一、安裝?
1、配置yum源,在yum源目錄下創建一個文件 mongodb-org-4.0.repo
vi /etc/yum.repos.d/mongodb-org-4.0.repo?
2、編輯文件:把下面內容復制進去
[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=0 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
? 這個內容在官網上復制的時候別在開著翻譯的情況下復制,你會爆炸的
官網gpgcheck=1,表示對從這個yum源下載的rpm包進行校驗,配合gpgkey(校驗密匙獲取地址)使用
不過……貌似這個校驗不能用,我試過1的時候報錯了……
?
3、安裝
yum install -y mongodb-org? 4、啟動
service mongod start? 5、登錄
mongodb默認登錄無認證,直接進
mongo?
?
二、導入導出數據(mongodb更新很快,高版本和低版本的命令有很多改動的地方,還請讀者看準自己用的版本到官網上找到最正確的命令)
官網文檔:https://docs.mongodb.com/manual/reference/program/mongoimport/#options
1、下載可視化工具,使用工具進行導入導出
http://www.mongoing.com/archives/3651
?
導入導出命令都是在登錄mongo之前進行的操作,從系統命令行運行,而不是在登錄mongo后的shell里面。
?
2、查看導入的參數信息:
mongoimport --help3、命令簡單導入:
mongoimport --db test --collection role --file role.json4、查看導出的參數信息:
mongoexport --help5、簡單導出
mongoexport --db test --collection role --out role.json?
導出的參數和導入是基本相同的,mongodb4.0版本和以前的版本相當于是換了一種認證機制。
個人建議:不要在導入之前給mongodb開啟身份認證,默認無用戶名密碼可登錄是最方便的。弄好一切之后再根據實際情況看看要不要開戶認證機制。
三、mongo中GridFS對象的導入導出
使用GridFS來存儲大型文件是一個很好的選擇,但是這個庫和上面的庫的導入導出不一樣。因為文件是以二進制的形式存儲的,應該使用二進制文件的形式進行導入導出。上面的庫使用的是json或csv的形式。
存儲文件的這個庫有且只有兩個指定的文檔:userfiles.files,userfiles.chunks
1、導入
mongorestore --db test-db --collection userfiles.files /路徑/userfiles.files.bsonmongorestore --db test-db --collection userfiles.chunks /路徑/userfiles.files.bson
?
2、導出
mongodump --db test-db --collection userfiles.files --out ./userfilesmongodump --db test-db --collection userfiles.chunks --out ./userfiles
?
這種導入導出的方法適用于所有的庫,不局限于GridFS
?
四、安全認證
認證機制最后再開,可以避免許多問題
1、創建用戶
1 // 至少需要添加一個用戶,且一定要添加一個root用戶,否則認證開啟失敗,因為開啟后你都沒用戶登錄,那不是很尷尬 2 > use admin 3 switched to db admin 4 > db.createUser({user:"root",pwd:"root_pwd",roles:[{role:"root",db:"admin"}]}); 5 Successfully added user: { 6 "user" : "root", 7 "roles" : [ 8 { 9 "role" : "root", 10 "db" : "admin" 11 } 12 ] 13 } 14 > use userfiles 15 switched to db userfiles 16 > db.createUser({user:"user_name",pwd:"user_pwd",roles:[{role:"dbOwner",db:"userfiles"}]}); 17 Successfully added user: { 18 "user" : "user_name", 19 "roles" : [ 20 { 21 "role" : "dbOwner", 22 "db" : "userfiles" 23 } 24 ] 25 } 26 > exit?
2、開啟安全認證
編輯文件:/etc/mongod.conf ,把?security: 前面的#號去掉,在下面保留兩個縮進加上一行?authorization: enabled ,enabled 和:之間要有一個空格,我也不知道為什么
重啟mongo服務
1 vi /etc/mongod.conf 2 # mongod.conf 3 4 # for documentation of all options, see: 5 # http://docs.mongodb.org/manual/reference/configuration-options/ 6 7 # where to write logging data. 8 systemLog: 9 destination: file 10 logAppend: true 11 path: /var/log/mongodb/mongod.log 12 13 # Where and how to store data. 14 storage: 15 dbPath: /var/lib/mongo 16 journal: 17 enabled: true 18 # engine: 19 # mmapv1: 20 # wiredTiger: 21 22 # how the process runs 23 processManagement: 24 fork: true # fork and run in background 25 pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile 26 timeZoneInfo: /usr/share/zoneinfo 27 28 # network interfaces 29 net: 30 port: 27017 31 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. 32 33 # 原來長這樣: 34 # security: 35 # 改成這樣 36 security: 37 authorization: enabled 38 39 #setParameter: 40 # authenticationMechanisms: SCRAM-SHA-1 41 42 #auth: true 43 44 #operationProfiling: 45 46 #replication: 47 48 #sharding: 49 50 ## Enterprise-Only Options 51 52 #auditLog: 53 54 #snmp: 55 ~ 56 ~ 57 ~ 58 ~ 59 "/etc/mongod.conf" 51L, 935C written 60 61 service mongod restart 62 Starting mongod: [ OK ]?
3、重新登錄,測試安全認證
1 # mongo 2 MongoDB shell version v4.0.2 3 connecting to: mongodb://127.0.0.1:27017 4 MongoDB server version: 4.0.2 5 // 這個時候你雖然進來了,但你還沒認證,你是沒有任何權限的 6 > show dbs 7 2018-09-14T16:15:21.985+0800 E QUERY [js] Error: listDatabases failed:{ 8 "ok" : 0, 9 "errmsg" : "command listDatabases requires authentication", 10 "code" : 13, 11 "codeName" : "Unauthorized" 12 } : 13 _getErrorWithCode@src/mongo/shell/utils.js:25:13 14 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:67:1 15 shellHelper.show@src/mongo/shell/utils.js:876:19 16 shellHelper@src/mongo/shell/utils.js:766:15 17 @(shellhelp2):1:1 18 19 > use admin 20 switched to db admin 21 > db.auth("root","root_pwd") 22 1 23 > show dbs 24 admin 0.000GB 25 config 0.000GB 26 local 0.000GB?
4、安全認證內置角色列表:(復制的官網:https://docs.mongodb.com/manual/core/security-built-in-roles/)
?
數據庫用戶角色
每個數據庫都包含以下角色:
| read | 提供對所有讀取數據的能力非?-系統集合和下列系統集合:system.indexes,system.js,和?system.namespaces收藏。 有關角色授予的特定權限,請參閱read。 |
| readWrite | 提供read角色的所有權限以及修改所有非系統集合和system.js集合的數據的能力。 有關角色授予的特定權限,請參閱?readWrite。 |
?
?
?
?
?
?
數據庫管理角色
每個數據庫都包含以下數據庫管理角色:
| dbAdmin | 提供執行管理任務(如與架構相關的任務,索引和收集統計信息)的功能。此角色不授予用戶和角色管理權限。 有關角色授予的特定權限,請參閱?dbAdmin。 |
| dbOwner | 數據庫所有者可以對數據庫執行任何管理操作。這個角色組合由授予的權限readWrite,?dbAdmin和userAdmin角色。 |
| userAdmin | 提供在當前數據庫上創建和修改角色和用戶的功能。由于該userAdmin角色允許用戶向任何用戶(包括他們自己)授予任何權限,因此該角色還間接地提供?對數據庫的超級用戶訪問權限,或者,如果作用于admin?數據庫,則提供對群集的訪問權限。 有關角色授予的特定權限,請參閱?userAdmin。 |
?
?
群集管理角色
該admin數據庫包括以下角色,用于管理整個系統而不僅僅是單個數據庫。這些角色包括但不限于副本集和分片集群管理功能。
| clusterAdmin | 提供最佳的集群管理訪問。這個角色組合由授予的權限clusterManager,clusterMonitor和hostManager角色。此外,角色提供了dropDatabase操作。 |
| clusterManager | 提供群集上的管理和監視操作。具有此角色的用戶可以分別訪問?分片和復制中使用的config和local數據庫。 有關角色授予的特定權限,請參閱?clusterManager。 |
| clusterMonitor | 提供對監視工具的只讀訪問權限,例如MongoDB Cloud Manager?和Ops Manager監視代理程序。 有關角色授予的特定權限,請參閱?clusterMonitor。 |
| hostManager | 提供監視和管理服務器的功能。 有關角色授予的特定權限,請參閱?hostManager。 |
?
?
?
?
?
?
?
?
備份和恢復角色
該admin數據庫包括以下用于備份和還原數據的角色:
| backup | 提供備份數據所需的最小權限。此角色提供了足夠的權限來使用MongoDB Cloud Manager備份代理,?Ops Manager備份代理或用于備份?mongodump整個mongod實例。 有關角色授予的特定權限,請參閱?backup。 |
| restore | 版本3.6中已更改:提供convertToCapped非系統集合。 提供從不包含system.profile?集合數據的備份還原數據所需的權限。在mongorestore沒有--oplogReplay選項的情況下恢復數據時,此角色就足夠?了。 有關角色授予的特定權限,請參閱?restore。 |
?
?
?
?
?
?
全數據庫角色
版本3.4中已更改。
以下角色可在上admin數據庫,并提供適用于所有數據庫,除了特權local和?config:
| readAnyDatabase | 提供與read除local和之外的所有數據庫相同的只讀權限config。該角色還在listDatabases整個群集上提供?操作。 有關角色授予的特定權限,請參閱?readAnyDatabase。 在版本3.4中更改:在3.4之前,readAnyDatabase包括local和?config數據庫。要為數據庫提供read權限,請在?local數據庫中使用admin數據庫中的?read角色創建用戶local。另見?clusterManager和clusterMonitor角色訪問config和local數據庫。 |
| readWriteAnyDatabase | 提供與readWrite除local和之外的所有數據庫相同的只讀權限config。該角色還在listDatabases整個群集上提供操作。 有關角色授予的特定權限,請參閱?readWriteAnyDatabase。 在版本3.4中更改:在3.4之前,readWriteAnyDatabase包括local?和config數據庫。要為數據庫提供readWrite權限,請在local數據庫中使用admin數據庫中的readWrite角色創建用戶local。另見clusterManager和clusterMonitor?角色訪問config和local數據庫。 |
| userAdminAnyDatabase | 提供與userAdmin除local和?之外的所有數據庫相同的用戶管理操作訪問權限config。 由于該userAdminAnyDatabase角色允許用戶向任何用戶(包括他們自己)授予任何權限,因此該角色還間接提供超級用戶訪問權限。 有關角色授予的特定權限,請參閱?userAdminAnyDatabase。 在版本3.4中更改:在3.4之前,userAdminAnyDatabase包括?local和config數據庫。 |
| dbAdminAnyDatabase | 提供與dbAdmin除local和之外的所有數據庫相同的只讀權限config。該角色還在listDatabases整個群集上提供操作。 有關角色授予的特定權限,請參閱?dbAdminAnyDatabase。 在版本3.4中更改:在3.4之前,dbAdminAnyDatabase包括local?和config數據庫。要為數據庫提供dbAdmin權限,請在local數據庫中使用admin數據庫中的dbAdmin角色創建用戶local。另見?clusterManager和clusterMonitor角色訪問config和local數據庫。 |
?
?
超級用戶角色
以下角色為所有資源提供完全權限:
| root | 提供對業務和所有的資源?readWriteAnyDatabase,?dbAdminAnyDatabase,userAdminAnyDatabase,?clusterAdmin,restore,和?結合。backup 有關角色授予的特定權限,請參閱?root。 |
?
?
?
?
內部角色
| __system | 提供對數據庫中的任何對象執行任何操作的權限。 除特殊情況外,請勿將此角色分配給表示應用程序或人員管理員的用戶對象。 有關更多信息,請參閱__system。 |
?
?
?
?
?
五、mongodb4.0.2兼容須知
1、官網文檔:https://docs.mongodb.com/manual/release-notes/4.0-compatibility/
刪除支持MONGODB-CR認證方式,新增SCRAM-SHA-256認證方式……
如果之前開發用的是低版本的mongo的就要注意了,很有可能要重寫代碼
我最后的解決方法是不開安全認證/捂臉,先上線,后更新的時候再改代碼加認證
?
2、檢查一下自己的mongodb-java-driver包是不是3.8.0版本
http://mongodb.github.io/mongo-java-driver/
?
3、檢查一下自己的spring整合mongodb包 spring-data-mongodb是不是與之匹配的版本(具體支持到哪個版本我也不清楚,看一下它的更新說明)
https://docs.spring.io/spring-data/mongodb/docs/2.0.10.RELEASE/reference/html/#new-features.2-0-0
?
轉載于:https://www.cnblogs.com/qq765065332/p/9642814.html
總結
以上是生活随笔為你收集整理的新手小白Linux(Centos6.5)部署java web项目(mongodb4.0.2安装及相关操作)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金九银十,史上最强 Java 面试题整理
- 下一篇: throttle_classes 60