安装步骤
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("数据库已连接!");
});