网站建设技术文档,网站做二维码,不用写代码可以做网站的软件,怎么样做网站代理商MongoDB 默认的启动是不验证用户名和密码的#xff0c;启动 MongoDB 服务后#xff0c;可以直接用命令 mongo 连接上来#xff0c;对所有的库具有 root 权限。
这种情况下数据就像在“裸奔”一样#xff0c;任何人都能修改我们的数据#xff0c;所以我们要添加一些限制启动 MongoDB 服务后可以直接用命令 mongo 连接上来对所有的库具有 root 权限。
这种情况下数据就像在“裸奔”一样任何人都能修改我们的数据所以我们要添加一些限制来保证我们数据库的安全。本实训就介绍了几种方法来保护我们的数据。
一、创建管理员用户 任务描述 本关任务在MongoDB数据库中创建一个具有root权限的管理员用户。 相关知识 为了完成本关任务你需要掌握 1.如何创建管理员用户 2.如何查看创建的管理员用户 3.如何启用身份验证 4.如何使用管理员身份登录数据库。 创建管理员用户 管理员用户就是负责创建和管理其他用户的用户。 切换到admin数据库admin数据库是一个具有特殊权限的数据库用户需要访问它以便执行某些管理命令 use admin 在数据库admin中创建管理员用户abc密码为123拥有root权限。 db.createUser({user:abc,pwd:123,roles:[{role:root,db:admin}]}) 结果如下图说明添加管理员用户成功 验证管理员用户是否存在 db.auth(abc,123) 如下图返回为1说明成功。 查看用户 进入admin数据库查看我们创建的用户 use admin
show users 显示如下图所示 启用身份验证 启用身份验证是为了保护数据库的安全。 身份验证默认是禁用的因此要在启动MongoDB数据库服务mongod时使用参数--auth来启用身份验证启用身份验证前确保你至少已有一个管理员用户。 先关闭现在有的数据库服务 use admin
db.shutdownServer() 运行结果如下 重新启动mongod服务 在命令行输入下面代码所使用的路径为平台所用路径 mongod --auth --port 27017 --dbpath /data/db --logpath /tmp/mongodb.log --fork auth: 开启身份验证dbpath: 指定数据存放路径logpath: 指定日志文件输出路径fork: 后台运行。 管理员登录数据库 情况一在命令行连接数据库注意选择admin数据库 mongo -uabc -p123 admin 情况二在受限的情况下验证身份 开启身份验证后我们使用命令mongo直接连接数据库虽然也能成功连接但是在进行数据库操作如show dbs时会受到限制 这是我们就要进入到admin数据库去进行身份验证 use admin
db.auth(abc,123) 返回数字1说明验证成功0说明失败。 验证成功后将拥有管理员权限。 删除管理员用户 删除管理员用户abc命令如下 db.system.users.remove({user:abc}) 返回1说明删除成功0说明删除失败。 二、按需求创建普通用户 任务描述 本关任务根据编程要求创建一个普通用户。 相关知识 为了完成本关任务你需要掌握 1.常用的用户权限 2.如何删除用户。 常用用户权限介绍 第一关我们已经接触了管理员用户的root权限现在我们再来看看普通用户可拥有的权限。 权限说明Read允许用户读取指定数据库readWrite允许用户读写指定数据库dbAdmin允许用户在指定数据库中执行管理函数如索引创建、删除查看统计或访问system.profileuserAdmin允许用户向system.users集合写入可以找指定数据库里创建、删除和管理用户clusterAdmin只在admin数据库中可用赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase只在admin数据库中可用赋予用户所有数据库的读权限readWriteAnyDatabase只在admin数据库中可用赋予用户所有数据库的读写权限userAdminAnyDatabase只在admin数据库中可用赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase只在admin数据库中可用赋予用户所有数据库的dbAdmin权限。root只在admin数据库中可用。超级账号超级权限 创建普通用户 创建用户user1密码useu1拥有数据库test的读写权限 use test
db.createUser({user:user1,pwd:user1,roles:[{role:readWrite,db:test}]}) 注该用户只对数据库test有权限。 查看用户命令show users 创建用户user2密码user2对数据库test2有读写权限对数据库test有只读权限。 use test2
db.createUser({user:user2,pwd:user2,roles:[{role:readWrite,db:test2},{role:read,db:test}]}) 查看用户命令show users 删除用户 要先确定自己有root权限删除user2用户先进入test2数据库 use test2
db.dropUser(user2) 结果返回true说明删除成功 编程要求 根据提示在右侧命令行进行操作创建数据库firstdb再创建一个对其具有只读权限的普通用户people密码为people。 rootevassh-13080431:~# mongouse firstdb
switched to db firstdbdb.createUser({user:people,pwd:people,roles:[{role:read,db:firstdb}]})
Successfully added user: {user : people,roles : [{role : read,db : firstdb}]
}
三、数据库限制访问 任务描述 本关任务在命令行进行操作按照要求对数据库的访问进行限制。 相关知识 为了完成本关任务你需要掌握 1.如何限制 IP 访问 2.如何限制端口访问。 限制 IP 访问需要重启数据库服务 mongod 时启用相应的功能步骤如下 关闭服务先用默认方法启动数据库mongo use admin #进入admin数据库
db.shutdownServer() #关闭服务
exit #退出数据库 启动服务只有本机 IP 可以连接数据库 mongod --dbpath /data/db --logpath /tmp/mongodb.log --bind_ip 127.0.0.1 --fork binf_ip 限制连接的网络接口可以设置多个以逗号隔开。 使用其他 IP 访问被限制如图1所示 图 1 限制端口访问 当按照以上方法启动 mongod 时默认情况下他会等待所有在端口27017上的入站连接可以用 -port 修改该设置。也需要重新启动 mongod 服务方法同上。 关闭服务先用默认方法启动数据库mongo use admin #进入admin数据库
db.shutdownServer() #关闭服务
exit #退出数据库 启动服务只有本机 IP 可以连接数据库且限制只能端口20000连接 mongod -port 20000 --dbpath /data/db --logpath /tmp/mongodb.log --bind_ip 127.0.0.1 --fork 连接数据库 mongo 127.0.0.1:20000 设置了端口后如果不加端口连接会被拒绝访问如图2所示 图 2 注在数据库实际的应用中最好不要使用这些默认设置对这些设置进行一些修改让你的数据更加安全。 编程要求 在右侧命令行进行操作 进入admin数据库关闭数据库服务必须先关闭服务 重新启动服务限制连接 IP 为127.0.0.1限制端口连接为20018。 use admin
switched to db admindb.shutdownServer()
server should be down...
2022-10-13T08:05:25.1520000 I NETWORK [js] trying reconnect to 127.0.0.1:20000 failed
2022-10-13T08:05:25.1530000 I NETWORK [js] reconnect 127.0.0.1:20000 failed failed exit
bye
rootevassh-13080431:~# mongod -port 20018 --dbpath /data/db --logpath /tmp/mongodb.log --bind_ip 127.0.0.1 --fork
2022-10-13T08:06:44.9250000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols none
about to fork child process, waiting until server is ready for connections.
forked process: 1159
child process started successfully, parent exiting