[TOC]
# 开启用户验证
## 添加用户
启动mongodb:
mongod
启动mongodb shell
mongo
添加用户:
~~~
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
~~~
## 更改配置文件
在配置文件中将
#security:
中的#去掉,并在其下一行,空两个空格,加上authorization: enabled,如下
~~~
security:
authorization: enabled
~~~
注意:authorization: enabled中冒号后加一个空格,这是yaml语法所要求的
## 重启mongodb数据库
~~~
sudo service mongod restart
~~~
注意:命令中是mongod,不是mongodb
设置远程连接
注意:老版本的图形界面管理软件可能不支持新版本的数据库,测试之前请保证软件是可用的
在配置文件中将
bindIp: 127.0.0.1
注释掉(即在句首加#)
#bindIp: 127.0.0.1
重启数据库
~~~
sudo service mongod restart
~~~
更改数据目录
默认的数据存储目录是/var/lib/mongodb,假设我们的目的路径是/home/mongodb
关闭数据库
~~~
sudo service mongod stop
~~~
在配置文件中将storage.dbPath项设置为目的路径,修改后如下
~~~
storage:
dbPath: /home/mongodb
~~~
将原目录下的文件复制到新目录中:
~~~
sudo cp -r /var/bin/mongodb/* /home/mongodb/
~~~
将mongod.lock文件删除后启动数据库
~~~
sudo rm /home/mongodb/mongod.lock
sudo service mongod start
~~~
测试远程连接
注意:
当你的mongo命令报错,连接失败时,请尝试删除数据存储目录下的mongod.lock文件后,重启mongodb数据库
# 配置权限
我的mongodb是通过brew install mongod安装的,所以按默认配置启动服务mongod --config /usr/local/etc/mongod.conf,此命令不是挂起的,所以我们另开窗口执行mongo,连接到admin库,在admin库添加超级用户:
~~~
Eugene-mac:~ Eugene$ mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
Server has startup warnings:
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten]
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-04-27T17:19:15.356+0800 I CONTROL [initandlisten]
> show dbs
admin 0.000GB
local 0.000GB
test 0.000GB
> use admin
switched to db admin
> db.createUser({
user: 'admin',
pwd: 'admin',
roles: [ { role: "__system", db: "admin" } ]
})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "__system",
"db" : "admin"
}
]
}
>
~~~
这样,超级用户就建成了,通过这个用户可以对任何库进行任何超做。但是利用这个超级用户来连接数据库显然是不安全的,所以我们可以对每个库进行权限配置。接下来就来配置其他库的用户权限,比如现在有一个test测试库,我配置一个读写权限的用户:
~~~
> use admin
switched to db admin
> db.createUser({
user: 'testUser',
pwd: 'testPwd',
roles: [ { role: 'readWrite', db: 'test'} ]
})
Successfully added user: {
"user" : "testUser",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
~~~
这样,这个用户名为testUser密码为testPwd的用户就建成了,如果我们用工具mongoose直连mongodb的话也是很方便的。
~~~
mongoose.connect('mongodb://testUser:testPwd@localhost:27017/test', {
auth: {
authdb: 'admin'
}
}, function(err){
if (err) {
console.error(err);
} else {
cosnole.log('连接数据库成功')
}
});
~~~
以上是连接test库的方式,如果要使用之前建的超级用户来访问test库的话,只要修改url中的账号和密码就行啦。(注意一定要访问的时候要对admin库验证,即authdb: 'admin')。
~~~
db.auth("admin","admin")
~~~
# 权限的角色
![](https://box.kancloud.cn/6666b013634210475f3b79b68a8d8f6b_2563x1021.jpg)
还有个root和__system这一般不对外开放
# 创建用户
创建语法
createUser(2.6之前为addUser)
语法
~~~
{user:"<name>",
pwd:"<password>",
customData:{<any information>},
roles:[{role:"<role>",db:"<database>"}]
}
~~~
角色类型
内建类型(read,readWrite,dbAdmin,dbOwner,userAdmin)
- SQL
- 名词
- mysql
- 初识mysql
- 备份和恢复
- 存储引擎
- 数据表损坏和修复
- mysql工具
- 数据库操作
- 增
- 删
- 改
- 查
- 数据类型
- 整数类型
- 小数类型
- 日期时间类型
- 字符和文本型
- enum类型
- set类型
- 时间类型
- null与not null和null与空值''的区别
- 数据表操作
- 创建
- 索引
- 约束
- 表选项列表
- 表的其他语句
- 视图
- sql增删改查
- sql增
- sql删
- sql改
- sql查
- sql语句练习
- 连接查询和更新
- 常用sql语句集锦
- 函数
- 字符函数
- 数值运算符
- 比较运算符与函数
- 日期时间函数
- 信息函数
- 聚合函数
- 加密函数
- null函数
- 用户权限管理
- 用户管理
- 权限管理
- pdo
- 与pdo相关的几个类
- 连接数据库
- 使用
- pdo的错误处理
- pdo结果集对象
- pdo结果集对象常用方法
- pdo预处理
- 常用属性
- mysql编程
- 事务
- 语句块
- mysql中的变量
- 存储函数
- 存储过程
- 触发器
- mysql优化
- 存储引擎
- 字段类型
- 三范式和逆范式
- 索引
- 查询缓存
- limit分页优化
- 分区
- 介绍
- 分区算法
- list分区
- range范围
- Hash哈希
- key键值
- 分区管理
- 特别注意
- 分表
- 数据碎片与维护
- innodb表压缩
- 慢查询
- explain执行计划
- count和max,groupby优化
- 子查询优化
- mysql锁机制
- 介绍
- 演示
- 总结
- 乐观锁和悲观锁
- 扛得住的mysql
- 实例和故事
- 系统参数优化
- mysql体系结构
- mysql基准测试
- 索引
- mysql的复制
- win配置MySQL主从
- mysql5.7新特性
- 常见问题
- general log
- 忘记密码
- uodo log与redo log
- 事务隔离级别
- mysql8密码登录
- explain
- 高效的Tree表
- on delete cascade 总结
- mongod
- 简介
- 集合文档操作语句
- 增删改查
- 索引
- 数据导入和导出
- 主从复制
- php7操作mongod
- 权限管理
- redis
- redis简介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件总结
- 外网连接
- 持久化
- RDB备份方式保存数据
- AOF备份方式保存数据
- 总结
- win安装redis和sentinel部署
- 事务
- Sentinel模式配置
- 分布式锁
- 管道
- php中redis代码
- 发布订阅
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置说明
- 启动
- kibana
- kibana下载
- kibana配置文件
- kibana常用功能
- 常用术语
- Beats
- Beats简介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架构
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 单模式下API增删改查
- mget获取多个文档
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查询
- Filter过滤
- 组合查询
- es配置文件
- es集群优化和管理
- logstash
- kibana
- es5.2
- 安装
- 冲突处理
- 数据备份
- 缺陷不足
- 集群管理api
- 分布式事务
- CAP理论
- BASE模型
- 两阶段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 异步确保型
- 最大努力通知型
- 总结