ubuntu 下部署 node 服务器环境 - 数据库 mongoDB

Ubuntu 上安装 mongoDB

安装 mongoDB

https://docs.mongodb.com/manu…

Ubuntu 14.04 为例:

1、sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
2、echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
3、sudo apt-get update
4、sudo apt-get install -y mongodb-org

修改默认端口号 27107

1、改 /etc/mongod.conf 《ubuntu 下部署 node 服务器环境 - 数据库 mongoDB》

2、重置配置 sudo service mongod restart
3、防火墙规则 /etc/iptables.up.rules 添加,允许数据库访问端口27018

-A INPUT -s 127.0.0.1 -p tcp --destination-port 27018-m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -d 127.0.0.1 -p tcp --source-port 27018-m state --state ESTABLISHED -j ACCEPT

4、重载规则 sudo iptables-restore < /etc/iptables.up.rules

操作 mongoDB

sudo service mongod stop
sudo service mongod start
sudo service mongod restart

cat /var/log/mongodb/mongod.log  // 查看数据库是否运行成功,末行如下:
[initandlisten] waiting for connections on port <port>

一些 hin 常用的命令

mongo --port 27019    

show dbs
use dbname    // 数据库不存在则创建
db.dropDatabase()    // 删除

show tables / collections    // 当前数据库下所有的集合
db.createCollection( 'User'[, options] )    // 创建新集合
db.User.drop()    // 删除集合

db / db.getName()    // 当前数据库名

db.getMongo()    // connection to 127.0.0.1:27018
db.stats()       // 统计
db.version()     // 版本

增删改查

这不是重点..

db.User.insert({'username':'july', 'age':'18'})
db.User.save({'username':'jucy', 'age':'18'})
db.User.find({'age':'18'})
db.User.update({'username': 'july'}, {$set:{'age':'20'}}, false, true )
db.User.remove({'username': 'july'})

往线上的 mongoDB 导入 数据库 或 单表数据

导入数据库

0、cd 到 mongoDB 的安装路径下的 bin
1、备份本地数据库 mongodump -h 127.0.0.1:27018 -d test -o d:\data\dump

 -h    mongodb所在的服务器地址,本机地址
 -d    指定需要备份的数据库实例
 -o    指定备份数据库的存放位置

2、打包压缩 tar zcvf test.tar.gz test

注:tar.gz 是Linux下的常用压缩格式,window下的解决办法: 7-zip  http://blog.csdn.net/ithomer/article/details/5111965

3、上传到服务器 scp -p 39999 d:/data/dump/test.tar.gz Jerry@IP:/home/Jerry/dbbackup/
4、服务端解压缩 tar xvf test.tar.gz
5、配置到线上 mongoDBmongorestore --host 127.0.0.1:27018 -d testdb ./dbbackup/test/

导入单表数据

0、数据库备份在 d:\data\dump , 就从这里开始操作
1、导出 mongoexport -d testdb -c users -q '{"name":{$ne:null}}' -o ./test-users.json

-d    从哪里
-c    哪张表
-q    条件
-o    output  到同级目录下的test-user.json

2、上传 scp
3、导入到目标数据库 -d testdb 的表 -c users 中: mongoimport --host 107.0.0.1:19999 -d testdb -c users ./test-users.json

从一台服务器 A 迁移数据到另一个 B 线上 MongoDB 中

  1. A导出下载到本地
  2. 上传至 B 。按照导入 数据库 | 单表 的步骤来..

为上线项目配置 MongoDB 数据库读写权限

1、创建管理员账号和用户。

mongo --port 27018
// 管理员账号
use admin
db.createUser({'user':'super-user', pwd: 'Safe1234*'}, roles: [{role: 'userAdminAnyDatebase', db:'admin'}]})
db.auth('super-user', 'Safe1234*') //授权

// 创建用户,和只读备份用户。去admin下授权
use testdb
db.createUser({'user':'test-runner', pwd: 'Test1234*'}, roles: [{role: 'readWrite', db:'testdb'}]})
db.createUser({'user':'test-wheeler', pwd: 'Backup1234*'}, roles: [{role: 'read', db:'testdb'}]})
use admin
db.auth('test-runner', 'Test1234*') 
db.auth('test-wheeler', 'Backup1234*') 

2、打开验证模式 sudo vi /etc/mongod.conf, 重启sudo service mongod restart

security: 
    authorization: 'enabled'

3、管理员可管理所有数据库,但操作之前需要先认证 db.auth('username','pwd'); 用户只能在用户所在的数据库登录 mongo 127.0.0.1:27018/testdb -u username -p pwd

    原文作者:弋儿
    原文地址: https://segmentfault.com/a/1190000012183322
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞