Mysql有一个高级的但不标准的存取权限系统。此部分即描述其如何工作。
1、权限系统做什么
Mysql的权限系统的主要功能是验证从假定主机来的用户连接。以及检查用户对数据库的select,insert,update和delete操作权限。
其附加功能还包括匿名用户验证及赋予权限以使用Mysql特殊的功能,如从文件中装入数据和管理操作。
2、Mysql的用户名和口令
Mysql的用户名和口令在Unix和Windows之间有一些差别: 用户名,Mysql用于达到其验证目的。与Unix和Windows的用户名毫无干系(login names)。大多数的Mysql客户端缺省的使用Uinx当前用户名作为Mysql用户名去登录,但那只是为了方便而已。客户端程序允许使用-u或--user参数指定一个不同的名字。这意味着你不可能使Mysql数据库得到安全保护除非每一个Mysql用户名都具有口令。任何人都可以用任何名字来企图连接数据库,如果他们指定的某一个名字恰好没有口令,他们就会取得成功。
Mysql用户名可以提高到十六位字符长,而典型的Unix用户名都限制在八位。
Mysql的口令跟Unix口令毫无干系。不必把你登录进Unix机器的口令和你用来在该机器上存取数据库的口令联系起来。
Mysql使用了与Unix登录进程不同的加密算法。
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系统中,你不必在每一次调用客户机程序进行连接的时候都在命令行敲入所有选项,可以为它们指定不同的缺省值。这可以用两种方法来办到: