mongodb 版本 3.4
启动MongoDB
启动MongoDB有两种方式
1、通过命令行启动
- –dbpath 指定数据库目录
- –fork 守护进程
- –port 指定端口,默认是27017
- –logpath 指定输出日志路径, 前提是先创建好目录
mongod --dbpath=/home/mongodb/db --fork --port=27017 --logpath=/home/mongodb/mongo.log
2、以文件配置形式启动,推荐。以后只要改动这个文件就好了。
# 1、 直接在当前目录编辑mongo.conf,没有的话会新建。名字自己定义。
vim mongo.conf
# 2、 写入以下内容
dbpath=/home/mongodb/db
logpath=/home/mongodb/mongo.log
fork=true
# 3、 指定配置文件启动
mongod -f mongo.conf
连接
mongo localhost:27017
# 或者,默认是localhost 端口是27017
mongo
创建用户角色
3.0版本以后使用 db.createUser
创建, addUser
已弃用。
MongoDB用户角色是跟着数据库走的。在哪个数据库创建就只能操作哪个数据库。
1、验证admin权限, 需要先验证才能后续的操作,否则无权限
# 进入admin数据库
use admin
# 验证,如果返回1说明成功
db.auth('用户名', '密码')
2、假如数据库是 test
# 先进入test数据库
use test;
3、创建用户
# user 用户名
# pwd 密码
# customData 对用户角色的描述,可省略
# roles 是一个数组里面是对象, 分配权限和数据库
db.createUser({
user: '用户名',
pwd: '密码',
roles: [
{
role: '权限分配',
db: '指定数据库',
},
{
role: '权限分配',
db: '指定数据库',
}
]
})
4、验证是否分配权限成功
db.auth('root','root');
role权限说明
read
- 允许用户读取指定数据库readWrite
- 允许用户读写指定数据库dbAdmin
- 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profileuserAdmin
- 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户clusterAdmin
- 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase
- 只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase
- 只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase
- 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase
- 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。root
- 只在admin数据库中可用。超级权限__system
- 内部角色
例如创建一个读写数据库的用户角色:
db.createUser({user: 'root',pwd: 'root',
roles: [
{
role: 'readWrite',
db: 'test',
},
]
})
用户名密码连接
# 连接,地址:端口/数据库, -u 指定用户名, -p 指定密码
mongo localhost:27017/test -u 用户名 -p 密码
# 进入 test 数据库
use test;
# 查看集合 show tables; 或者 show collections;
show tables;
# 尝试插入一条数据,如果成功表示没问题
db.users.insert({name:'admin'})
删除用户
# 注意的是你在哪个数据库创建的用户就要进入哪个数据库删除,否则出错。
db.dropUser('用户名')