|
先前我简单的说了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的参考手册 。 |
|