Ubuntu MongoDB 安裝及使用

1. 查看當前系統版本,確認為ubuntu系統

終端輸入cat /proc/version

image.png

2. 安裝mongodb

  • 查看本地是否有mongodb, 終端輸入mongo --version
  • 沒有向下進行

終端輸入sudo apt-get install mongodb

  • 出現提示 Do you want to continue? [Y/n] 輸入 Y,按 Enter繼續

  • 在終端輸入 mongo -version,如下圖,安裝成功

    image.png

3. 啟用mongodb

  1. 創建配置文件:
sudo nano /etc/systemd/system/mongdb.service
  1. 將下面內容寫入
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
 WantedBy=multi-user.target
  1. 啟動服務
sudo service mongodb start

4. 使用

> root@iZwz9jb9ek3ckh79tmy891Z:~# mongo
MongoDB shell version: 2.6.10
connecting to: test
> show dbs
admin  0.078GB
local  0.078GB
> use admin
switched to db admin
> db.createUser()
2019-01-11T10:33:01.536+0800 TypeError: Cannot read property 'user' of undefined at src/mongo/shell/db.js:1056
> db.createUser(
... {user: "chenzhiyong",}
... 
... )
2019-01-11T10:33:55.588+0800 Error: couldn't add user: Must provide a 'pwd' field for all user documents, except those with '$external' as the user's source db at src/mongo/shell/db.js:1081
> db.createUser({
... user: "chenzhiyong",
... pwd: "Lunarjiuyuechusi",
... roles:[
... {
... role: "userAdminAnyDatabase",
... db: "admin"
... }]
... })
Successfully added user: {
    "user" : "chenzhiyong",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
> 
> show users
{
    "_id" : "admin.root",
    "user" : "root",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
{
    "_id" : "admin.chenzhiyong",
    "user" : "chenzhiyong",
    "db" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

5. 設置遠程連接訪問mongodb數據庫

mongodb數據庫啟動后,默認只能在本地使用,端口為27017,那么如何設置讓它可以遠程訪問呢?

1.修改配置文件mongodb.conf

命令:vim /etc/mongodb.conf

把 bind_ip=127.0.0.1 這一行注釋掉或者是修改成 bind_ip=0.0.0.0,最好是直接注釋掉,因為在centos下,使用bind_ip=0.0.0.0會報錯。

注意:設置遠程訪問以后,密碼啟動auth授權訪問,不然非常不安全,數據庫容易被攻擊,在配置文件中修改如下:

# Turn on/off security.  Off is currently the default
#noauth = true
auth = true

2.在mongo數據庫中新建用戶名和密碼:

在非授權模式下啟動數據庫,并使用mongo連接上數據庫,例如我們要新建meeting數據庫的用戶和密碼,則:

use meeting

db.createUser({user:"kimkat",pwd:"123456",roles:[{ role: "readWriteAnyDatabase", db: "meeting" }]})

注意:如果要添加meeting數據庫的用戶,請先use meeting,不然即使添加成功,也連接不上。

mongodb添加用戶的方法:https://docs.mongodb.com/manual/reference/method/db.createUser/index.html

mongodb內置的用戶角色:https://docs.mongodb.com/manual/core/security-built-in-roles/index.html


3.重啟mongodb服務

命令:/etc/init.d/mongodb restart

2.1防火墻開放27017端口

命令:iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT

注意:如果是云服務器,一般不用在系統內打開端口,只要在服務器管理界面打開端口就可以了。


4.遠程連接

要連接的IP:116.85.12.51

命令:mongo 116.85.12.51:27017/meeting -u "kimkat" -p "123456"

這樣就可以連接到116.85.12.51的mongodb/meeting的數據庫了。

建議使用robo3t,mongovue,或者mongo compass等可視化工具來連接,其中官方提供的mongo compass可以直接導出csv文件。

筆者嘗試了使用windows下的mongo.exe連接云服務器上的數據庫,結果因為shell和server不匹配,所以失敗。

image

5. mongoDB用戶增刪改查

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。