MySQL的登录验证方式为:用户名+密码+IP+端口号
MongoDB的登录验证方式为:用户名+密码+IP+端口号+验证库
验证库,建立用户时use到的库,在使用用户登录时,要加上验证库才能登录。对于管理员用户,必须在admin下创建
1 建用户时,use到的库,就是次用户的验证库(也就是use进哪个库后创建的账号,就是该用户的验证库)
2 登录时必须明确指定验证库才能登录
3 登录时,管理员用的验证库是admin库,普通用户的验证库一般是所管理的库设置为验证库
4 如果直接登录到数据库,不进行use,默认的验证库是test,不是生产建议的
案例:
1 创建超级管理员用,管理所有数据库(必须use到admin库)
use admin
db.createUser({
user: "root",
pwd: "root123",
roles: [ { role: "root", db: "admin" } ]
})
基本语法说明
user:用户名
pwd:密码
roles:
role:角色名
db:作用对象
role(角色)有三种:root,readWrite,read
在mongodb中进行认证
db.auth('root','root123')
开启用户验证功能
修改配置文件
cat >> /mongodb/conf/mongo.conf <<EOF
security:
authorization: enabled
EOF
mongod -f /mongodb/conf/mongo.conf --shutdown
mongod -f /mongodb/conf/mongo.conf
重启后登录
mongo -uroot -proot123 192.168.2.100/admin (/admin就是验证库)
这个时候用 mongo也是可以登录的,但是进去不能做任何操作
2 创建对app数据库,读、写权限的app01用户
use app
db.createUser({
user: "app01",
pwd: "123456",
roles: [ { role:"readWrite", db: "app" } ]
})
db.auth('app01','123123')
登录验证
mongo -uapp01 -p123123 192.168.2.100/app
这里可以看到不加/app验证库是远程登录不了的
删除用户
db.dropUser('app01')
注:删除用户要进入到该用户的验证库才能删除成功
3 创建app数据库读写权限的用户app03用户,并对test数据库具有读权限
use app
db.createUser({
user: "app03",
pwd: "123456",
roles: [ { role:"readWrite", db: "app" },
{ role: "read", db: "test" } ]
})
查看所有用户及权限(用户信息保存在admin库中的system.users表)
db.system.users.find()