linux服务器mongodb服务环境搭建与连接

服务器安装配置mongodb服务

下载安装包

centos上使用的mongodb需要是redhat对应的版本,安装包选择CommunityServer -> Linux -> RHEL 7 Linux 64-bit x64(mongodb-linux-x86_64-rhel70-3.4.7.tgz)。

从mac上传安装包到centos

从mac电脑上,通过shell,使用scp命令上传安装包到centos。
  scp(security copy)是unix命令,上传过程中会加密。命令使用格式为:
  scp -i secret_key local_file_path username@ip_address:remote_file_path
  如scp -i secret_key ./1.txt [email protected]:/data/2.txt
    -i secret_key指定连接到远程服务器的密钥文件。
    ./1.txt指定要上传的本地文件地路径。
    [email protected]:/data/2.txt指定要上传的服务器的ip地址、用户名及文件在服务器上存储的路径。

解压

cd /data
tar -zxvf mongodb-linux-x86_64-rhel70-3.4.7.tgz
mv mongodb-linux-x86_64-rhel70-3.4.7 mongodb

安装

把mongodb安装包移动到/usr/local/server,并添加一些配置文件,供后续使用,如data, logs。在/etc下添加配置文件mongod.conf

mkdir /usr/local/server
mv /data/mongodb /usr/local/server
cd /usr/local/server/mongodb/
mkdir data
touch logs
touch /etc/mongod.conf

添加mongod命令到PATH

首先在/etc/profile文件最后添加export PATH=$PATH:/usr/local/server/mongodb/bin。然后执行source /etc/profile使配置生效。这样,在所有路径中都能使用mongodb命令。

编辑配置文件

编译mongodb.conf文件,指定数据库存放位置、log文件等。注意,首次启动时,因为还没有添加用户和密码,所以auth配置要设置为false,这样所有用户都能操作数据库,有很大的安全风险,所以随后会介绍如何为数据库添加用户和密码,然后将auth设置为true,这样再次启动mongodb服务后,访问该数据库就需要使用用户和密码登录,否则访问不了数据库,这样就保证了安全性。
  注意,不能设置bindip项,如果bindip设置为127.0.0.1,那么远程客户端就不能通过服务器Ip访问服务器mongodb数据库。不设置bindip,那么远程客户端和服务器本身都可以访问服务器数据库。

dbpath = /usr/local/server/mongodb/data
logpath = /usr/local/server/mongodb/logs
logappend = true
port = 27017
fork = true
auth = false

启动停止服务

启动服务:mongo --config /etc/mongodb.conf
  停止服务:ps -ef | grep mongo, kill -9 pid

导出数据库文件到json文件中

使用mongoexport命令,可以将mongodb数据库导出到json/csv文件中。注意,导出时,是按collection逐个导出。命令格式如下:
  mongoexport -d dbname -c collectionname -o file --type json/csv -f field
    -d :数据库名
    -c :collection名
    -o :输出的文件名
    --type : 输出的格式,默认为json
    -f :输出的字段,如果-type为csv,则需要加上-f "字段名",不指定-f时默认输出所有字段
  例:mongoexport -d mongotest -c users -o /home/python/Desktop/mongoDB/users.json --type json -f "_id,user_id,user_name,age,status"
  数据库导出完毕后,将json文件打包在一起,通过scp命令传输到服务器。然后服务器解压后,逐个导入到数据库。

导入json文件

使用mongoimport命令,可以将json/csv文件中的内容导入到指定数据库指定collection中。命令格式如下:
  mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
    --headerline 如果导入的格式是csv,则可以使用第一行的标题作为导入的字段

远程连接准备

修改安全组

至此,服务器mongodb数据库已经启动起来,并有了数据,服务器能通过mongo连接服务器数据库。
  但这时客户机不能访问服务器数据库,因为服务器的安全组设置还没有允许TCP:27017访问,需要在服务器后台管理中,在安全组中添加TCP:27017项,客户端才能通过mongo mongodb://ip:27017/dbname访问服务器mongodb数据库。

添加用户密码

到目前为止,所有人都能访问并操作服务器数据库,连接到数据库时,会打出很多提示,意思是不安全,需要添加安全设置。
  但是这样不安全,所以需要做两件事,第一、为指定数据库添加用户和密码,这样,只有在连接时使用这个用户和密码登录,才能操作该数据库;第二、将数据库配置文件中的auth打开为true,并重启服务,这样下次再连接数据库时,就需要指定用户和密码,才能操作数据库。使用用户和密码连接到数据库时,就不会再提示那些当前连接不安全的信息。
  添加用户和密码,需要先用mongo连接到数据库,然后指定数据库,再使用添加命令添加,如下:

use dbname
db.createUser({user:"root",pwd:"root",roles:[{role:"readWrite",db:"dbname"}]})

添加用户密码成功后,将数据库配置文件mongodb.conf中的auth修改为true,再次启动服务器。这样,下次再连接数据库,就需要使用用户和密码登录,才能权限操作数据库。

远程连接mongodb数据库

在保证服务器安全组TCP:27017已添加,数据库已创建用户密码,启动数据库时auth为true等条件后,各客户端就能安全地连接服务器数据库了,且连接成功后不会再提示不安全这样的信息。
  各客户端访问服务器mongodb数据库,使用同样的url:mongodb://username:pwd@ip:port/dbname

服务器本地shell连接

服务器本地连接,也需要指定用户和密码,否则不能访问数据库中内容。
  mongo mongodb://username:[email protected]:port/dbname

客户端shell连接

mongo mongodb://username:pwd@ip:port/dbname

python连接

# -*- coding:utf-8 -*-
from pymongo import MongoClient

client = MongoClient('mongodb://username:pwd@ip:27017/dbname')
db = client.dbname
cursor = db.collectionname.find({}, {"_id": 1, "name": 1})
count = cursor.count()
if count > 0:
    for doc in cursor:
        print doc['_id'], doc['name']

node连接

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

const mongoUrl = 'mongodb://username:pwd@ip:27017/dbname';

MongoClient.connect(mongoUrl, (err, db) => {
    assert.equal(null, err);
    console.log('connected successfully to server');

    var author = db.collection('author');
    author.find({}, {'_id': 1, 'name': 1}).toArray((err, docs) => {
        assert.equal(err, null);
        console.log('found the following records');
        console.log(docs);
    });
});

你可能感兴趣的:(linux服务器mongodb服务环境搭建与连接)