我知道的关系型数据库都有权限控制,哪些用户可以访问哪些库,哪些表,哪些用户可以插入和更新2008注册机打不开没有权限,有的用户只有读权限。
比如:mysql安装配置好后,有一个内置的mysql数据库2008注册机打不开没有权限,里面有一个user表来存储用户和用户权限,而这个最关系型的数据库,有没有这样的表呢?
一、掌握权限,理解以下4项基本一致
1、没有默认管理员账号,需要先添加管理员账号,然后开启权限认证。
2、切换到admin数据库2008注册机打不开没有权限,添加的账号就是管理员账号。
3、用户只能登录用户所在的数据库,包括管理员账号。
4、管理员可以管理所有数据库,但不能直接管理其他数据库。它们只能在 admin 数据库中进行身份验证。这很奇怪
二、添加管理员帐号
复制代码代码如下:
[root@test]# mongo
外壳:2.4.6
到:坦克
> use admin //切换到admin数据库
到数据库管理员
> 显示;
.
.users //用户表
> db..users.find(); //用户表没有数据
> db.('tank','test'); //添加管理员帐号
{
“用户”:“”,
“”:假,
“密码”:“”,
“_id”:(“3429”)
}
三、启用用户授权认证
复制代码代码如下:
[root@test]# vim /etc/.conf //去掉auth=true之前的注释
[root@test]# /etc/init.d/ //重启生效
四、用户只能登录用户所在的数据库,管理员需要通过admin认证才能管理其他数据库
复制代码代码如下:
[root@test]# mongo
外壳:2.4.6
到:坦克
> 显示数据库; // 因为没有认证,所以无法显示所有数据库
12 月 4 日星期三 06:39:50.925 :{ "ok" : 0, "" : "" } at src/mongo/shell/mongo.js:46
> db.auth('tank','test'); //认证失败,因为用户不属于tank数据库
错误:18 {代码:18,正常:0.0,:“身份验证失败”}
> use admin //切换到admin数据库
到数据库管理员
> db.auth('tank','test'); //在admin数据库中认证成功
1
> 使用坦克; //切换到tank数据库
到数据库坦克
> 显示; //不再提示权限
.
用户
五、添加普通用户
复制代码代码如下:
> 使用坦克;
到数据库坦克
> db.('tank1','test'); //在tank数据库中添加一个可读写的用户tank1
{
"_id" : ("70f3"),
“用户”:“坦克1”,
“”:假,
“密码”:“”
}
> db.('tank2','test',true); //增加一个只读用户tank2到tank数据库
{
“用户”:“坦克2”,
“”:是的,
“密码”:“”,
“_id”:(“e315”)
}
> 退出 //退出
再见
[root@]# mongo
外壳:2.4.6
到:坦克
> db.auth('tank1','test'); //刚刚添加的用户可以登录了。
1
六、php 客户端连接
1、推荐方法一
复制代码代码如下:
$mongo = new Mongo();
$db = $mongo->('坦克'); //切换到tank数据库
$db->("tank3", "test"); //认证
$users= $db->("users"); //选择用户表
$ = $users->find(); //读取数据
($ as $id => $value) {
echo "$id:"; ($价值);回声“
";
}[代码]
这种方法简单易懂,root命令行下的操作过程类似。
2、推荐方法二
复制代码代码如下:
$mongo = new Mongo("://tank3:test@127.0.0.1:27017/tank"); //认证用户,这里的数据库,只启用认证
$db = $mongo->('坦克'); //选择数据库
$users= $db->("users");
$ = $users->find();
($ as $id => $value) {
echo "$id:"; ($价值);回声“
";
}
上述两种方式的区别在于,一种是先选择数据库进行认证,另一种是先选择数据库进行认证。
版权保护: 本文由 8BDU软件分享博客-8BDU软件园 原创,转载请保留链接: /zhuceji/591.html