LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 961|回复: 3

mysql的用户认证及用户管理(简述)

[复制链接]
发表于 2003-7-14 17:46:41 | 显示全部楼层 |阅读模式
先前我简单的说了postgresql的认证和用户管理。在这里再说一说mysql的认证与用户管理。
        相比较而言mysql的用户认证相对postgresql的用户认证来得简单,但是不最是不是最有效。关于用户管理,在postgresql中,随着新版本的推出它向大型数据库更进一步的靠拢了,在7.3.x中,它提出了模式的概念。而mysql在这些方面并没有太大的动作,个人认为这和mysql的定位不无关系。它是讲究的快速和简单。

        mysql的用户认证是通过mysql系统安装完成后,系统中的超级数据库(我们估且这么叫它)mysql来管理系统中的用户的。数据库mysql的建立,是使用安装中scripts/mysql_install_db这个脚本来实现对超级数据库的安装的。它在安装完成后,默认有四个用户。二个root用户,二个匿名用户。可以看到mysql的安装文档里是这么描述mysql的安装的:
   shell> groupadd mysql
     shell> useradd -g mysql mysql
     shell> cd /usr/local
     shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
     shell> ln -s full-path-to-mysql-VERSION-OS mysql
     shell> cd mysql
     shell> scripts/mysql_install_db
     shell> chown -R root  .
     shell> chown -R mysql data
     shell> chgrp -R mysql .
     shell> bin/safe_mysqld --user=mysql &
从shell> scripts/mysql_install_db这一步可看到超级数据库是在数据库安装之前就应该已经建立好了的。
mysql默认是接受TCP/IP连接的。数据库服务器对连接请求是对两部分进行区别的。第一是用户,第二用来连接的地址。比如说用记ghw@localhost, 在mysql看来它是分成了两个部分的。数据库既要判断用户名还需要对其来路进行判断。
在数据库mysql里有以下这几个表是与用户登录和认证有关的:
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv    |
| db              |
| func            |
| host            |
| tables_priv     |
| user            |
+-----------------+

最重要的表又有这三个:user, host, db.
当一个用户请求连接,数据库系统首先检查表user, 如果表中不存在这个用户或者用户连接的地址不符,那用户将被拒绝,如果用户和用记用来连接入的地址都被允许的话,系统再检查用户所发送的要求,比如说要登录某数据库,对某个表进行操作等,它就会进一步的检查DB用和另外几个表。

       在mysql中增加用户并没有命令CREATE USER可用,而只能用grant和revoke,手动删除user表里相关的记录来进行操作。
由于mysql的用户认证相对简单,我也不多说。大家可以进一步的参考mysql的参考手册 。
发表于 2003-7-16 17:22:49 | 显示全部楼层
多谢黄老弟(看资料可能比你虚长一二),待回去后好好拜读
发表于 2003-7-18 09:43:41 | 显示全部楼层
哦,就是说直接对记录用户信息的表进行改写,就可以达到认证的目的。那请求连接用户的地址是一定要和host 表中的地址一样吗?还是只要和user 表中的用户名一样就行了呢?
 楼主| 发表于 2003-7-18 10:53:03 | 显示全部楼层
对的,可以直接对user直接改写,就可以实现用户的管理。
但是必须注意的是:如果你不熟悉的话,很容易出错的。
直接修改了之后权限并不会马上生效。必须用这个命令使其生效:
flush privileges
即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表