在上文中,我们了解了教你如何利用MySQL学习MongoDB之SQL语法,本文中我们继续我们的学习之旅,学习两者的授权和权限。
数据库的安全性是每一个DBA重点关注的部分,在数据库建立之后,数据的安全就显得尤为重要。
对于一个数据库管理员来说,安全性就意味着他必须保证那些具有特殊数据访问权限的用户能够登录到数据库服务器,并且能够访问数据以及对数据库对象实施各种权限范围内的操作;同时,DBA还要防止所有的非授权用户的非法操作。
1、MySQL授权和权限
MySQL中有两种级别的权限:管理和用户。所有权限都可分别使用 GRANT 和 REVOKE 语句授予和收回。可以授予用户create、select、update、delete、insert、execute、index 等权限,也可授予alter、drop和shutdown等系统权限。根用户root在默认情况下具有所有权限。
2、MongoDB授权和权限
官方文档开启MongoDB 服务时不添加任何参数时,可以对数据库任意操作,而且可以远程访问数据库,所以推荐只是在开发是才这样不设置任何参数。如果启动的时候指定--auth参数,可以从阻止根层面上的访问和连接
(1)只允许某ip访问
mongod --bind_ip 127.0.0.1
(2)指定服务端口
mongod --bind_ip 127.0.0.1 --port27888
(3)添加用户认证
mongod --bind_ip 127.0.0.1 --port27888 –auth
(4)添加用户
在刚安装完毕的时候MongoDB都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息。
当admin.system.users中一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作,直到在admin.system.users中添加了一个用户。
下面分别创建两个用户, 在foo中创建用户名为user1密码为pwd1的用户,如下:
在admin中创建用户名为root密码为pwd2的用户,如下:
如果认证成功会显示1,用以下命令可以查看特定的数据库的用户信息: