MSSQL网页编程之MySQL用户办理(1)
两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。MySQL办理员应当晓得怎样设置MySQL用户账号,指出哪一个用户能够毗连服务器,从那里毗连,毗连后能做甚么。MySQL3.22.11入手下手引进两条语句使得这项事情更简单做:GRANT语句创立MySQL用户并指定其权限,而REVOKE语句删除权限。两条语句饰演了mysql数据库的前端脚色,并供应与间接操纵这些表的内容分歧的另外一种办法。CREATE和REVOKE语句影响4个表:受权表内容
user能毗连服务器的用户和他们具有的任何全局权限
db数据库级权限
tables_priv表级权限
columns_priv列级权限
另有第5个受权表(host),但它不受GRANT和REVOKE的影响。
当你对一个用户收回一条GRANT语句时,在user表中为该用户创立一笔记录。假如语句指定任何全局权限(办理权限或合用于一切数据库的权限),这些也纪录在user表中。假如你指定命据库、表和列级权限,他们被分离纪录在db、tables_priv和columns_priv表中。
用GRANT和REVOKE比间接修正受权表更简单些,但是,倡议你浏览一下《MySQL平安性指南》。这些表非常主要,并且作为一位办理员,你应当了解它们怎样超出GRANT和REVOKE语句的功效程度。
鄙人面的章节中,我们将先容怎样设置MySQL用户账号并受权。我们也触及怎样撤权和从受权表中删除用户。
你大概也想思索利用mysqlaccess和mysql_setpermission剧本,它是MySQL分发的一部分,它们是Perl剧本,供应GRANT语句的另外一种选择设置用户账号。mysql_setpermission必要安装DBI撑持。
1创立用户并受权
GRANT语句的语法看上往像如许:GRANTprivileges(columns)ONwhatTOuserIDENTIFIEDBY"password"WITHGRANTOPTION
要利用该语句,你必要填写以下部分:
privileges
授与用户的权限,下表列出可用于GRANT语句的权限指定符:
权限指定符权限同意的操纵
ALTER修正表和索引
CREATE创立数据库和表
DELETE删除表中已有的纪录
DROP丢弃(删除)数据库和表
INDEX创立或丢弃索引
INSERT向表中拔出新行
REFERENCE未用
SELECT检索表中的纪录
UPDATE修正现存表纪录
FILE读或写服务器上的文件
PROCESS检察服务器中实行的线程信息或杀逝世线程
RELOAD重载受权表或清空日记、主机缓存或表缓存。
SHUTDOWN封闭服务器
ALL一切;ALLPRIVILEGES同义词
USAGE特别的“无权限”权限
上表显现在第一组的权限指定符合用于数据库、表和列,第二组数办理权限。一样平常,这些被绝对严厉地受权,由于它们同意用户影响服务器的操纵。第三组权限特别,ALL意味着“一切权限”,UASGE意味着无权限,即创立用户,但不授与权限。
columns
权限使用的列,它是可选的,而且你只能设置列特定的权限。假如命令有多于一个列,应当用逗号分隔它们。
what
权限使用的级别。权限能够是全局的(合用于一切数据库和一切表)、特定命据库(合用于一个数据库中的一切表)或特定表的。能够经由过程指定一个columns字句是权限是列特定的。
user
权限授与的用户,它由一个用户名和主机名构成。在MySQL中,你不但指定谁能毗连,另有从那里毗连。这同意你让两个同名用户从分歧中央毗连。MySQL让你辨别他们,并相互自力地付与权限。
MySQL中的一个用户名就是你毗连服务器时指定的用户名,该名字不用与你的Unix登录名或Windows名接洽起来。缺省地,假如你不明白指定一个名字,客户程序将利用你的登录名作为MySQL用户名。这只是一个商定。你能够在受权表中将该名字改成nobody,然后以nobody毗连实行必要超等用户权限的操纵。
password
付与用户的口令,它是可选的。假如你对新用户没有指定IDENTIFIEDBY子句,该用户不赋给口令(不平安)。对现有效户,任何你指定的口令将取代老口令。假如你不指定口令,老口令坚持稳定,当你用IDENTIFIEDBY时,口令字符串用改用口令的字面寄义,GRANT将为你编码口令,不要象你用SETPASSWORD那样利用password()函数。
WITHGRANTOPTION子句是可选的。假如你包括它,用户能够授与权限经由过程GRANT语句受权给别的用户。你能够用该子句授与别的用户受权的才能。
用户名、口令、数据库和表名在受权表纪录中是巨细写敏感的,主机名和列名不是。
一样平常地,你能够经由过程扣问几个复杂的成绩来辨认GRANT语句的品种:
谁能毗连,从那儿毗连?
用户应当有甚么级其余权限,他们合用于甚么?
用户应当同意办理权限吗?
为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层. 其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?! 但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右) 从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。 SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上. 始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
页:
[1]