当前位置:嗨网首页>书籍在线阅读

10-创建数据库管理员账户

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.3.3 创建数据库管理员账户

实现MongoDB数据库访问控制 知道在MongoDB环境中配置访问控制的基本知识后,便可亲自实现访问控制了。在本节中,您将创建用户管理员账户和数据库管理员账户,并在MongoDB服务器中启用身份验证。 请执行下面的步骤,以创建用户管理员账户和数据库管理员账户,并在MongoDB服务器中启用身份验证。 1.确保启动了MongoDB服务器。 2.在文件夹code/hour04中新建一个文件,并将其命名为add_admin_accounts.js。 3.在这个文件中输入程序清单4.8所示的代码。这些代码连接到数据库admin,删除用户账户testReader,然后使用db.addUser()创建角色为readWriteAnyDatabase、dbAdminAny Database和clusterAdmin的用户账户dbadmin以及角色为userAdminAnyDatabase的用户账户useradmin。 4.将这个文件存盘。 5.在控制台窗口中,切换到文件夹code/hour04,并执行命令mongo addadmin accounts.js以运行这个脚本。程序清单4.9显示了执行脚本add_admin_accounts.js得到的输出。 6.通知MongoDB服务器。 7.在文件夹/bin,创建下述MongoDB服务器配置文件: 8.在这个配置文件中添加下面的配置设置,并将文件存盘。这类似于您在前一章创建的配置文件,只是将noauth改成了auth,让MongoDB服务器要求验证身份: 9.启动MongoDB服务器。打开一个控制台窗口,并在控制台提示符下执行下面的命令来启动MongoDB服务器。您需要将替换为您的安装路径。这将启动MongoDB服务器,并启用身份验证。 10.启动MongoDB shell。 11.执行下面的命令尝试显示数据库test中的用户,将出现身份验证错误: 12.使用下面的命令以用户useradmin的身份登录: 13.再次执行下面的命令,您将看到用户清单。至此,您实现了基本的MongoDB访问控制。 14.在MongoDB shell中,使用下面的命令关闭MongoDB服务器:

在本书后面,为简化示例代码,大多数示例都使用未启用身份验证的配置文件mongod_configuration.txt。仅当示例要求时,才使用配置文件mongod_configuration_auth.txt。 程序清单4.8 add_admin_accounts.js:添加数据库管理员账户和用户管理员账户 程序清单4.9 add_admin_accounts.js-output:添加数据库管理员账户和用户管理员账户的输出 ▲

要创建数据库管理员,可在MongoDB shell中切换到数据库admin,再使用方法addUser添加角色为readWriteAnyDatabase、dbAdminAnyDatabase和clusterAdmin的用户。这让这名用户能够访问系统中的所有数据库、创建新的数据库以及管理MongoDB集群和副本集。下面的示例创建一个名为dbadmin的数据库管理员:

use admin
db.addUser( { user: "dbadmin",
     pwd: "test",
     roles: [ "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin" ] } )

这样,您就可以在MongoDB shell中使用这个用户账户来管理数据库了。创建新的数据库管理员后,可使用下面的命令验证这名用户的身份:

01 mongo = new Mongo("localhost");
02 db = mongo.getDB("admin");
03 db.addUser( { user: "dbadmin",
04                  pwd: "test",
05                  roles: [ "readWriteAnyDatabase",
06                             "dbAdminAnyDatabase",
07                             "clusterAdmin" ] } );
08 db.addUser( { user: "useradmin",
09                  pwd: "test",
10                  roles: [ "userAdminAnyDatabase" ] } )
use admin
db.auth("dbadmin", "test")

您还可在启动MongoDB shell时使用选项--username和--password向数据库admin验证数据库管理员的身份,如下所示:

MongoDB shell version: 2.4.8
connecting to: test
type "help" for help
{
         "user" : "dbadmin",
         "pwd" : "78384f4d73368bd2d3a3e1da926dd269",
         "roles" : [
                  "readWriteAnyDatabase",
                  "dbAdminAnyDatabase",
                  "clusterAdmin"
         ],
         "_id" : ObjectId("52d95f1b4c1b542899f6b04b")
}
{
         "user" : "useradmin",
         "pwd" : "0b4568ab22a52a6b494fd54e64fcee9f",
         "roles" : [
                  "userAdminAnyDatabase"
         ],
         "_id" : ObjectId("52d95f1b4c1b542899f6b04c")
}
mongo --username "dbadmin" --password "test"

▼ Try It Yourself

提示:

<mongo_install_location>/bin/mongod_config_auth.txt
verbose = true
port = 27017
dbpath=c:\mongodb\data\db\
auth = true
maxConns = 10
rest = true
mongod –-config <mongo_install_location>/bin/mongod_config_auth.txt
use test
show users
use admin
db.auth("useradmin", "test")
use test
show users
use admin
db.auth("dbadmin", "test")
db.shutdownServer()