极限首页 业界焦点 软件工程师之路 系统工程师之路 网络工程师之路 软件下载 技术社区
 Linux 下安装MySQL
 在 Linux 和 FireWire 上创
 Oracle 10gR2 RAC+ RHEL4
 Oracle 中如何删除重复数据
 MySQL服务维护笔记
 Oracle HowTo:如何启动或关
 Statspack ORA-00001 uniq
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 触发器
 Linux 下安装MySQL
 在 Linux 和 FireWire 上创
 Oracle 10gR2 RAC+ RHEL4
 Oracle 中如何删除重复数据
 MySQL服务维护笔记
 Oracle HowTo:如何启动或关
 Statspack ORA-00001 uniq
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 新特性教程 第一
 MySQL 5.0 触发器

Shell 中文手册

Python 2.3 中文手册

Python 2.4 中文手册

Mysql 4.x 中文手册

PHP 4.x 中文手册

Apache 2.x 中文手册
更多手册

站内搜索:
当前位置:首页>>软件工程师之路>>数据库>>正文
Mysql存取权限系统(上)
时间:2005-04-27 作者:不详 来源:亿能网

 

Mysql有一个高级的但不标准的存取权限系统.此部分即描述其如何工作.

权限系统做什么

Mysql的权限系统的主要功能是验证从假定主机来的用户连接.以及检查用户对数据库的select,insert,update和delete操作权限.

其附加功能还包括匿名用户验证及赋予权限以使用Mysql特殊的功能,如从文件中装入数据和管理操作.

Mysql的用户名和口令

Mysql的用户名和口令在Unix和Windows之间有一些差别:

·用户名,Mysql用于达到其验证目的.与Unix和Windows的用户名毫无干系(login names).大多数的Mysql客户端缺省的使用Uinx当前用户名作为Mysql用户名去登录,但那只是为了方便而已.客户端程序允许使用-u或--user参数指定一个不同的名字.这意味着你不可能使Mysql数据库得到安全保护除非每一个Mysql用户名都具有口令.任何人都可以用任何名字来企图连接数据库,如果他们指定的某一个名字恰好没有口令,他们就会取得成功.

·Mysql用户名可以提高到十六位字符长,而典型的Unix用户名都限制在八位
.

·Mysql的口令跟Unix口令毫无干系.不必把你登录进Unix机器的口令和你用来在该机器上存取数据库的口令联系起来.

·Mysql使用了与Unix登录进程不同的加密算法.请参见7.3.11节各种函数中对PASSWORD()和ENCRYPT()函数的描述.

6.3连接上Mysql服务器

Mysql客户端程序通常会让你指定一些连接参数,但你想存取Mysql数据库的时候:你想连接的主机,你的用户名和口令.例如,Mysql客户端可以象这样开始(可选参数被加上了"["和"]"):

shell> mysql [-h 主机名] [-u 用户名] [-p口令]

也可以用--host=主机名,--user=用户名和--password=口令来代替-h,-u和-p选项.注意,在-p或--password和口令之间没有空格.

如果在命令行没有指定连接参数,Mysql将使用缺省值:

·缺省的主机名是localhost.
·缺省的用户名是你在Unix中的登录名.
·如果没有-p参数则将不提供口令.

因而,对于Unix用户Joe如下的命令是等价的

shell> mysql -h localhost -u joe
shell> mysql -h localhost
shell> mysql -u joe
shell> mysql

其它的客户端的动作与此类似.

在Unix系统中,你不必在每一次调用客户机程序进行连接的时候都在命令行敲入所有选项,可以为它们指定不同的缺省值.这可以用两种方法来办到:

·你可以在你的home目录中的".my.cnf"配置文件中的[client]一节指定连接参数.该文件的相关节看起来可能象这样:

[client]host=host_name
user=user_name
password=your_pass

请参见4.15.4选项文件一节
·你也可以使用环境变量来指定连接参数.主机可以被指定使用MYSQL_HOST,Mysql用户名可以被指定使用USER,LOGNAME或是LOGIN(尽管这些变量可能已经被设置成你的Unix登录名,但它们可能被任意改变).口令可以被指定为使用MYSQL_PWD(
但这是不安全的;参见下节)

如果通过多种不同的方法指定连接参数,那么在命令行中指定的值比在配置文件中和环境变量中指定的值具有更高的优先权.而在配置文件中指定的值又比在环境变量中指定的值具有更高的优先权.

使你的口令安全

在其它用户可以发现的情况下将你的口令用一种方法暴露的指定出来是相当失策的.下面列出了当你使用客户端程序时可以用来指定密码的方法,比比较了每一种方法的优劣:

·在命令行使用一个 -p密码 或 --password=密码 参数.这确很方便,但极不安全,你密码能被系统状态检测程序看见(如ps),所以可以被其他用户调用出来显示在命令行上.(MySQL客户端特别在命令行参数初始化时用0覆盖它们,但在该值显得
可见时仍有短暂的间隔).
·用一个-p或--password参数(不指定你的密码).这样,客户端程序会要求密码从终端输入:

shell> mysql -u 用户名 -p]
Enter password: ********

客户端把你输入的密码以"*"字符显示在终端上,以使旁观者无法看见.如此输入密码比你在命令行上指定密码更安全,因为它对其他用户并不可见.但是,此输入密码的方法只在你使用交互式程序时才有效.如果你想非交互的从一个脚本中调用客户端,则没有机会从终端输入密码了.
·把你的密码保存在一个配置文件中.举例来说,你可以把你的密码列在你home目录下的".my.cnf"文件的[client]节:

[client]
password=your_pass

如果你把密码存放在".my.cnf"中,那么同组用户和其他用户对该文件必须不能具有读取和写入的权限.确定文件的存取模式必须为400或600.参见4.15.4节选项文件.
·你也可以把你的密码存放在MYSQL_PWD环境变量中,但该方法被认为极不安全而通常不被使用.某些版本的PS包括一个选项可以列出正在运行的进程的环境;你的密码将被清楚的显示出来,如果你设置了MYSQL_PWD环境变量的话.


推荐】【 】【关闭


关于极限 | 站内地图 | 意见反馈 | 广告服务 | 数据服务 | 联系我们
本站所刊登的文章,技术资料,软件均整理于网络资源或本站原创,转载请务必联系原作者或本站。
Copyright ? 2001-2004 UPLinux.com All Rights Reserved.
本站唯一联系信箱:
京ICP备05010519