仓酷云

标题: PHP网页编程之MySQL用户办理(转) [打印本页]

作者: 爱飞    时间: 2015-2-4 00:18
标题: PHP网页编程之MySQL用户办理(转)
说说这一个月左右的学习情况和心得吧!我个人认为,既然决定了去做一件事,那就要以认真的态度去对待!既然决定来学习了,那不管当初是抱着怎样的心态来到这个培训班的,都要让自己认真的投入到学习中。mysql|用户办理   MySQL用户办理


[晏子]  http://clyan.hongnet.com/index.html

MySQL办理员应当晓得若何设置MySQL用户账号,指出哪一个用户可以毗连办事器,从哪里毗连,毗连后能做甚么。MySQL 3.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语句的语法看上去像如许:
  1. GRANT privileges (columns)    ON what    TO user IDENTIFIED BY "password"    WITH GRANT OPTION 
复制代码
要利用该语句,你需求填写以下局部:

授与用户的权限,下表列出可用于GRANT语句的权限指定符:
权限指定符
权限答应的操作ALTER修正表和索引CREATE创立数据库和表DELETE删除表中已有的纪录DROP丢弃(删除)数据库和表INDEX创立或丢弃索引INSERT向表中拔出新行REFERENCE未用SELECT检索表中的纪录UPDATE修正现存表纪录FILE读或写办事器上的文件PROCESS检查办事器中履行的线程信息或杀逝世线程RELOAD重载受权表或清空日记、主机缓存或表缓存。SHUTDOWN封闭办事器ALL一切;ALL PRIVILEGES同义词USAGE特别的“无权限”权限
上表显示在第一组的权限指定符合用于数据库、表和列,第二组数办理权限。普通,这些被绝对严厉地受权,由于它们答应用户影响办事器的操作。第三组权限特别,ALL意味着“一切权限”,UASGE意味着无权限,即创立用户,但不授与权限。

权限应用的列,它是可选的,而且你只能设置列特定的权限。假如号令有多于一个列,应当用逗号分隔它们。

权限应用的级别。权限可所以全局的(合用于一切数据库和一切表)、特定命据库(合用于一个数据库中的一切表)或特定表的。可以经由过程指定一个columns字句是权限是列特定的。

权限授与的用户,它由一个用户名和主机名构成。在MySQL中,你不但指定谁能毗连,还有从哪里毗连。这答应你让两个同名用户从分歧中央毗连。MySQL让你辨别他们,并彼此自力地付与权限。
MySQL中的一个用户名就是你毗连办事器时指定的用户名,该名字不用与你的Unix登录名或Windows名接洽起来。缺省地,假如你不明白指定一个名字,客户法式将利用你的登录名作为MySQL用户名。这只是一个商定。你可以在受权表中将该名字改成nobody,然后以nobody毗连履行需求超等用户权限的操作。

付与用户的口令,它是可选的。假如你对新用户没有指定IDENTIFIED BY子句,该用户不赋给口令(不平安)。对现有效户,任何你指定的口令将取代老口令。假如你不指定口令,老口令坚持不变,当你用IDENTIFIED BY时,口令字符串用改用口令的字面寄义,GRANT将为你编码口令,不要象你用SET PASSWORD 那样利用password()函数。
WITH GRANT OPTION子句是可选的。假如你包括它,用户可以授与权限经由过程GRANT语句受权给其它用户。你可以用该子句授与其它用户受权的才能。
用户名、口令、数据库和表名在受权表纪录中是巨细写敏感的,主机名和列名不是。
普通地,你可以经由过程扣问几个复杂的成绩来辨认GRANT语句的品种:

上面就会商一些例子。1.1 谁能毗连,从那儿毗连?


你可以答应一个用户从特定的或一系列主机毗连。有一个极端,假如你晓得晋升从一个主机毗连,你可以将权限局限于单个主机:
  1. GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY "ruby"GRANT ALL ON samp_db.* TO fred@res.mars.com IDENTIFIED BY "quartz"
复制代码
(samp_db.*意思是“samp_db数据库的一切表)另外一个极端是,你能够有一个常常游览并需求能从世界各地的主机毗连的用户max。在这类情形下,你可以答应他不管从哪里毗连:
  1. GRANT ALL ON samp_db.* TO max@% IDENTIFIED BY "diamond"
复制代码
“%”字符起通配符感化,与LIKE形式婚配的寄义不异。在上述语句中,它意味着“任何主机”。所以max和max@%等价。这是创立用户最复杂的办法,但也是最不平安的。
取个中,你可以答应一个用户从一个受限的主机纠合会见。例如,要答应mary从snake.net域的任何主机毗连,用一个%.snake.net主机指定符:
  1. GRANT ALL ON samp_db.* TO mary@.snake.net IDENTIFIED BY "quartz";
复制代码
假如你喜好,用户标识符的主机局部可以用IP地址而不是一个主机名来给定。你可以指定一个IP地址或一个包括形式字符的地址,并且,从MySQL 3.23,你还可以指定具有指出用于收集号的位数的收集掩码的IP号:
  1.     GRANT ALL ON samp_db.* TO boris@192.168.128.3 IDENTIFIED BY "ruby"    GRANT ALL ON samp_db.* TO fred@192.168.128.% IDENTIFIED BY "quartz"    GRANT ALL ON samp_db.* TO rex@192.168.128.0/17 IDENTIFIED BY "ruby"
复制代码
第一个例子指出用户能从其毗连的特定主机,第二个指定关于C类子网192.168.128的IP形式,而第三条语句中,192.168.128.0/17指定一个17位收集号并婚配具有192.168.128头17位的IP地址。 
假如MySQL埋怨你指定的用户值,你能够需求利用引号(只将用户名和主机名局部分隔加引号)。
  1. GRANT ALL ON samp_db.president TO "my friend"@"boa.snake.net"
复制代码
1.2 用户应当有甚么级其余权限和它们应当合用于甚么?


你可以受权分歧级其余权限,全局权限是最壮大的,由于它们合用于任何数据库。要使ethel成为可做任何工作的超等用户,包含能受权给其它用户,收回以下语句:
  1. GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION
复制代码
ON子句中的*.*意味着“一切数据库、一切表”。从平安思索,咱们指定ethel只能从当地毗连。限制一个超等用户可以毗连的主机凡是是明智的,由于它限制了试图破解口令的主机。
有些权限(FILE、PROCESS、RELOAD和SHUTDOWN)是办理权限而且只能用"ON *.*"全局权限指定符受权。假如你情愿,你可以受权这些权限,而不受权数据库权限。例如,以下语句设置一个flush用户,他只能收回flush语句。这能够在你需求履行诸如清空日记等的办理剧本中会有效:
  1. GRANT RELOAD ON *.* TO flushl@localhost IDENTIFIED BY "flushpass"
复制代码
普通地,你想受权办理权限,小气点,由于具有它们的用户可以影响你的办事器的操作。
数据库级权限合用于一个特定命据库中的一切表,它们可经由过程利用ON db_name.*子句授与:
  1. GRANT ALL ON samp_db TO bill@racer.snake.net INDETIFIED BY "rock"    GRANT SELECT ON samp_db TO ro_user@% INDETIFIED BY "rock"
复制代码
第一条语句向bill受权samp_db数据库中一切表的权限,第二条创立一个严厉限制会见的用户ro_user(只读用户),只能会见samp_db数据库中的一切表,但只要读取,即用户只能收回SELECT语句。
你可以列出一系列同时授与的各个权限。例如,假如你想让用户能读取并能修正现无数据库的内容,但不克不及创立新表或删除表,以下授与这些权限:
  1. GRANT SELECT,INSERT,DELETE,UPDATE ON samp_db TO bill@snake.net INDETIFIED BY "rock"
复制代码
关于更精细的会见掌握,你可以在各个表上受权,或乃至在表的每一个列上。当你想向用户埋没一个表的局部时,或你想让一个用户只能修正特定的列时,列特定权限十分有效。如:
  1. GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY "ruby"GRANT ALL ON samp_db.* TO fred@res.mars.com IDENTIFIED BY "quartz"0
复制代码
第一条语句授与对全部member表的读权限并设置了一个口令,第二条语句增添了UPDATE权限,当只对expiration列。没需要再指定口令,由于第一条语句已指定了。
假如你想对多个列授与权限,指定一个用逗号分隔的列表。例如,对assistant用户增添member表的地址字段的UPDATE权限,利用以下语句,新权限将加到用户已有的权限中:
GRANT UPDATE (street,city,state,zip) ON samp_db TO assistant@localhost
凡是,你不想授与任何比用户的确需求的权限宽的权限。但是,当你想让用户能创立一个一时表以保留两头了局,但你又不想让他们在一个包括他们不该修正内容的数据库中如许做时,产生了要授与在一个数据库上的绝对宽松的权限。你可以经由过程创立一个分隔的数据库(如tmp)并授与开数据库上的一切权限来停止。例如,假如你想让来自mars.net域中主机的任何用户利用tmp数据库,你可以收回如许的GRANT语句:
GRANT ALL ON tmp.* TO ""@mars.net
在你做完以后,用户可以创立并用tmp.tbl_name模式援用tmp中的表(在用户指定符中的""创立一个匿名用户,任何用户均婚配空白用户名)。1.3 用户应当被答应办理权限吗?


你可以答应一个数据库的具有者经由过程授与数据库上的一切具有者权限来掌握数据库的会见,在受权时,指定WITH GRANT OPTION。例如:假如你想让alicia能从big.corp.com域的任何主机毗连并具有sales数据库中一切表的办理员权限,你可以用以下GRANT语句:
GRANT ALL ON sales.* TO alicia@%.big.corp.com INDETIFIED BY "applejuice" WITH GRANT OPTION
在后果上WITH GRANT OPTION子句答应你把会见受权的权力授与另外一个用户。要注重,具有GRANT权限的两个用户可以彼此受权。假如你只赐与了第一个用户SELECT权限,而另外一个用户有GRANT加上SELECT权限,那末第二个用户可所以第一个用户更“壮大”。2 撤权并删除用户


要作废一个用户的权限,利用REVOKE语句。REVOKE的语法十分相似于GRANT语句,除TO用FROM代替而且没有INDETIFED BY和WITH GRANT OPTION子句:
REVOKE privileges (columns) ON what FROM user
user局部必需婚配本来GRANT语句的你想撤权的用户的user局部。privileges局部不需婚配,你可以用GRANT语句受权,然后用REVOKE语句只撤消局部权限。
REVOKE语句只删除权限,而不删除用户。即便你撤消了一切权限,在user表中的用户纪录仍然保存,这意味着用户依然可以毗连办事器。要完整删除一个用户,你必需用一条DELETE语句明白从user表中删除用户纪录:
  1. GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY "ruby"GRANT ALL ON samp_db.* TO fred@res.mars.com IDENTIFIED BY "quartz"1
复制代码
DELETE语句删除用户纪录,而FLUSH语句告知办事重视载受权表。(当你利用GRANT和REVOKE语句时,表主动重载,而你直接修正受权表时不是。)
  最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。
作者: 飘飘悠悠    时间: 2015-2-4 11:18
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 精灵巫婆    时间: 2015-2-9 22:20
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 若相依    时间: 2015-2-28 00:44
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 简单生活    时间: 2015-3-9 16:41
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 莫相离    时间: 2015-3-11 13:32
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: 小妖女    时间: 2015-3-18 03:38
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 因胸联盟    时间: 2015-3-22 20:55
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 再现理想    时间: 2015-3-28 04:52
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 若天明    时间: 2015-3-31 23:09
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 金色的骷髅    时间: 2015-4-1 19:08
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 冷月葬花魂    时间: 2015-4-13 07:09
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 小魔女    时间: 2015-4-21 15:51
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 海妖    时间: 2015-5-6 18:09
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
作者: 愤怒的大鸟    时间: 2015-5-6 19:05
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 老尸    时间: 2015-5-8 14:17
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 谁可相欹    时间: 2015-6-27 17:53
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 活着的死人    时间: 2015-6-29 18:47
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 第二个灵魂    时间: 2015-7-9 08:06
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 小女巫    时间: 2015-7-11 06:37
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2