首页 | 网站开发 | 数据库技术 | 操作系统 | 创意设计 | 组网专栏 | 信息安全 | 综合应用 | 会员登录 | 会员投稿
 当前位置:首页>>操作系统>>其它>>正文
Mysql存取权限系统
文章出处:联动天下  作者:联动天下  发布时间:2005-12-21
 

  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()函数的描述.

连接上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

·你也可以使用环境变量来指定连接参数.主机可以被指定使用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包括一个选项

[返回顶部↑]  [推荐好友] [查看评论]  
用户名: 新注册) 密码: 匿名评论 [查看评论]  发表评论
评论内容:(不能超过120字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 
↑文章搜索↑
  关键字:  
  范  围:  
  开始搜索  
§相关文章§
·Servlet/JSP配置详解(基础
·做个ADSL+Linux软路由器
·proftp 安装设定文档
·redhat7.2 DNS配置笔记
·IIS的十七个常见漏洞
·Samba和Windows的密码处理
·Squid优化完全手册(2)
·在unix linux下安装配置DH
§推荐文章§
| 网络教程 | 学习教程 | 域名交易 | 域名注册 | 域名主机 | 域名查询 | 虚拟主机 | 空间代理 | 域名代理 | 企业黄页 | 站长工具 | 在线客服 | 求职招聘