安装步骤

1.配置yum源

创建源文件

vim /etc/yum.repos.d/mongodb-org-3.4.repo

添加以下内容

[mongodb-org-3.4]  
name=MongoDB Repository  
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/  
gpgcheck=1  
enabled=1  
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

然后保存退出 (先按ESC,再输入:wq)

2.安装启动

安装

yum -y install mongodb-org

启动MongoDB server

systemctl start mongod

进入MongoDB shell

mongo

显示所有数据库

show dbs

权限管理与远程连接

1.权限认证开启

打开配置文件

vim /etc/mongod.conf

编辑以下内容

security:  //去除前面#号
  authorization: enabled #加入这一句,注意缩进,否则重启不了服务

重启服务

systemctl restart mongod

2.创建管理员账号

切换到admin库

use admin

执行命令

db.createUser({
    user:"管理员账号",pwd:"管理员密码",
    roles:[{role:"root",db:"admin"}]
})

在admin库里执行认证,否则不能继续操作

db.auth('管理员账号','管理员密码')

3.创建普通用户

创建用户必须指定库名,即用户是和库绑定的

db.createUser({
    user:"用户账号",pwd:"用户密码",
    roles:[{role:"readWrite",db:"绑定数据库名"},
    {role:"readWrite",db:"绑定数据库名"}]#绑定多个可用逗号隔开
})

一些常用role:

- read
	提供本库下所有非系统collection的读权限
- readWrite
	提供本库下所有非系统collection的读写权限
-dbAdmin
    提供一些库管理的权限,诸如索引创建,增删集合,删库等等,并没有对所有集合的读权限,因此其实很少会用到。
- dbOwner
    库拥有者权限,即readWrite、dbAdmin、userAdmin角色的合体。
- userAdmin
    提供在本库下创建用户、角色,删除用户、角色,修改密码等一系列用户相关的权限。
- readAnyDatabase
	提供针对除了local和config库外所有其他库的读权限。
- readWriteAnyDatabase
	提供针对除了local和config库外所有其他库的读写权限。
- root
    即超级用户的权限,拥有此权限你可以管理操作任意数据库。

退出重新进入mongo,此时需要身份认证才能操作数据库

#用户必须切换到其相应的库登陆
use 绑定数据库名 
db.auth('username','password')

#或者在命令行中直接登录 
mongo 绑定数据库名 -u username -p password

所有用户登录时必须通过绑定的数据库进行登录,root用户也不例外

db.dropUser("用户名") #删除用户(需有权限)

4.远程连接

进入配置文件

vim /etc/mongod.conf

将bind_ip=127.0.0.1 这一行注释掉,并配置好防火墙(如果有)

远程终端连接

mongo IP地址:端口(默认27017)/绑定的数据库名 -u 用户名 -p 密码

Nodejs连接

# mongodb模块
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://用户名:密码@IP地址:端口(默认27017)/要操作(或创建)的数据库?authSource=绑定的数据库名";

MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
	if (err) throw err;
 	console.log("数据库已连接!");
	db.close();
});

# mongoose模块
var mongoose=require('mongoose');
var url = "mongodb://用户名:密码@IP地址:端口(默认27017)/要操作(或创建)的数据库?authSource=绑定的数据库名";
mongoose.connect(url, { useNewUrlParser: true }, function(err) {
	if (err) throw err;
	console.log("数据库已连接!");
});