在一个没有超级用户的mongodb 生产库上如何添加超级用户
说来这个问题,都觉得不可思议,一个数据库怎么没有超级用户呢,我们知道,MYSQL,PG,ORACLE等,创建好后,都有一个默认的超级用户,MONGODB也有超级用户,但需要自己去建立,默认是没有的。国内一些软件公司,可能为了安全的因素,在部署应用时,就没有创建超级用户,同时启用了权限认证auth,然后就创建自己的业务数据库,导致后面维护时,只能登录到他的库去看该库的信息,但整个MONGODB的运行信息,由于没有超级用户信息,很多信息,都无法获取,比如运行 db.serverStatus() 都会报错,这种情况下,后面我们怎么才能把超级用户加进去呢
下面我们来讲一下后期添加超级用户的步骤:
1.关闭配置文件权限认证
#security:
#authorization: enabled
要加超级用户,必须要关闭权限认证,这个通过修改配置文件来实现。
2.关闭数据库
关闭数据库,可以通过操作系统方式来实现
ps -ef|grep mongod
kill -9 pid
或者:
use admin
db.shutdownServer();
3.做好备份
为了避免出现失误,在后续的操作之前,最好把数据库做一个备份
我这里使用 tar 命令备了一个,后面有问题,直接使用tar 还原即可
tar cvf mongodb.tar /data/mongo/db
4.重启数据库
mongod -f /etc/mongodb.conf
以第一步关闭权限认证方式生效。
5.登录数据库
mongo --host=localhost --port=27017
这个时候,登录,不再需要用户账户信息,就可登录。
6.增加超级用户
> use admin --切换到ADMIN数据库
switched to db admin
> show tables; --查看一下目前里面有哪些表
system.users
system.version
--创建管理用户
> db.createUser({'user':'root',
'pwd':'sztech@root',
'roles':[{role:'root',db:'admin'}]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
>
7.关闭数据库
use admin
db.shutdownServer();
8.修改配置文件增加权限验证
vim /etc/mongodb.conf
#登录验证
auth=true
9.重新启动数据库
mongod -f /etc/mongodb.conf
这个时候,开启了权限认证
10.本地登录 - 连接时验证
$ mongo
> use admin
switched to db admin
> db.auth("username", "password")
比如我们这里:
> db.auth("root","sztech@root")
我也可以去验证一下业务用户
> db.auth("ordb","ordb@ordb")
没有问题,然后,使用业务用户登录去做一些查询操作,验证业务用户可以正常操作。
到此,超级用户添加成功。