首页 > 编程 > PHP > 正文

MySQL储户掌管

2019-09-08 23:11:14
书体:
源泉:选登
供稿:网友

  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句子的nfc功能是什么水准器。

在下棚代客车章回中,吾辈将介绍何以设置MySQL储户微博注册账号并授权。吾辈也论及何以撤权和从授权表中删除储户。

你可能也想考虑动用mysqlaccess和mysql_setpermission脚本。它是MySQL分派的局部。它们是Perl脚本,供给GRANT句子的另一种选择设置储户微博注册账号。mysql_setpermission要求安上DBI倾向。

1 创设储户并授权

GRANT句子的语法看起身像这么:

GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION 

要动用该句子,你要求填入下列部分:

privileges

给予储户的权限,下表列出可用来GRANT句子的权限指定符:

权限指定符

权限允许的操纵

ALTER 改动表和索引

CREATE 创设数据库和表

DELETE 删除表中已组成部分记录

DROP 废除(删除)数据库和表

INDEX 创设或废除索引

INSERT 向表中插入行助手最新官方下载

REFERENCE 未用

SELECT 搜索表中的记录

UPDATE 改动下存表记录

FILE 读或写加速器上的文件夹怎么设置密码

PROCESS 检察加速器中实践的线程汇通财经网原油信息或杀死线程

RELOAD 挂载授权表或清空日志,电脑主机报价缓存或表缓存。

SHUTDOWN 关闭加速器

ALL 所有;ALL PRIVILEGESpresent的同义词

USAGE 特殊的“无权限”权限

上表显示在第一组的权限指定符方便于数据库,第二组数掌管权限。这些被相对严格地授权,因为它们允许储户反射加速器的操纵。第三组权限特殊,ALL意味“所有权限”,UASGE意味无权限。即创设储户,但不给予权限。

columns

权限运用的列,并且你不得不设置列特定的权限。假使传奇gm命令是多少有多于一个列,理应用逗号剪切它们。

what

权限运用的级别。权限可以是全力的(方便于所有数据库和所有表),特定数据库(方便于一个数据库中的所有表)或特定表的。可以穿过指定一个columns唯美字句是权限是列特定的。

user

权限给予的储户。它由一个户名和电脑主机报价名组合。在MySQL中。你不仅指定还有从何处连接。这允许你让两个同行储户从敌众我寡地方连接。MySQL让你区分她们,并两面独立地给予权限。

MySQL中的一个户名就是你连接加速器时指定的户名。该名字不必与你的Unix报到名或Windows名联系起身。缺省地。假使你不明确指定一个名字,用电户次序将动用你的报到名作为MySQL户名。这只是太爱你一个说定。你可以在授权表中将该名字改为nobody,后来以nobody连接实践要求超级储户权限的操纵。

password

给予储户的队列它是可选的。假使你对新储户完了指定IDENTIFIED BY子句,该储户不赋给队列口令(不安全)。对现有储户,所有你指定的队列口令将指代老队列口令。假使你不指定队列老队列口令保持不变,当你用IDENTIFIED BY时,队列口令字符串用换人队列口令的字面含义,GRANT将为你编码队列不要象你用SET PASSWORD 那么着动用password()函数。

WITH GRANT OPTION子句是可选的。假使你暗含它。储户可以给予权限穿过GRANT句子授权给另一个储户。你可以用该子句给予另一个储户授权的学习能力培训加盟。

户名,队列数据库和表名在授权表记录中是大小写敏感的。电脑主机报价名和列名不是。

一般地,你可以穿过询问几个简单的问题来鉴别GRANT句子的茶叶的种类:

从那儿连接?

储户理应有什么级别的权限,她们方便于什么?

储户理应允许掌管权限吗?

下头就讨论一些例子。

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。在这类平地风波下,你可以允许他随便从何处连接:

GRANT ALL ON samp_db.* TO max@% IDENTIFIED BY "diamond"

“%”字符起通配符有哪些蓝莓的功效与作用,与LIKE敞开式缔姻的含义一致。在上述句子中,它意味“所有电脑主机报价”。据此max和max@%动漫中的等价交换者。这是成立储户最简单的抓挠,但也是最不安全的。

你可以允许一个储户从一个受限的电脑主机报价召集访问。要允许mary从snake.net域的所有电脑主机报价连接,用一个%.snake.net电脑主机报价指定符:

GRANT ALL ON samp_db.* TO mary@.snake.net IDENTIFIED BY "quartz";

假使你喜欢,储户退格符的电脑主机报价部分可以用IP我的ip地址而不是一个电脑主机报价名来加以。你可以指定一个IP我的ip地址或一个暗含敞开式字符的我的ip地址。并且,从MySQL 3.23,你还可以指定不无指出用来网络故障号的位数的网络故障掩码的IP号:

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我的ip地址。 

假使MySQL抱怨你指定的储户值,你可能要求动用引号怎么打出来(只将户名和电脑主机报价名部分剪切加引号怎么打出来)。

GRANT ALL ON samp_db.president TO "my friend"@"boa.snake.net"

1.2 储户理应有什么级别的权限和它们理应方便于什么?

你可以授权敌众我寡级别的权限,全力权限是最强大的。因为它们方便于所有数据库。要使ethel成为可做所有事情的超级储户,包罗能授权给另一个储户,行文下列句子:

GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION

ON子句中的*.*意味“所有数据库,所有表”。从安全考虑,吾辈指定ethel不得不从地头连接。限定一个超级储户可以连接的电脑主机报价通常是明智的。因为它限定了试图破解队列口令的电脑主机报价。

组成部分权限(FILE。PROCESS。RELOAD和SHUTDOWN)是掌管权限并且不得不用"ON *.*"全力权限指定符授权。假使你指望。你可以授权这些权限。而不授权数据库权限。下列句子设置一个flush储户,他不得不行文flush句子。这可能在你要求实践例如清空日志等的掌管脚本中会有用:

GRANT RELOAD ON *.* TO flushl@localhost IDENTIFIED BY "flushpass"

一般地,你想授权掌管权限。吝啬点。因为享有它们的储户可以反射你的加速器的操纵。

数据库级权限方便于一个特定数据库中的所有表,它们可穿过动用ON db_name.*子句给予:

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句子。

你可以列出一车载斗量同时给予的各个权限。假使你想让储户能抽取并字前面能加逗号吗改动现有数据库的内容,但使不得创设新表或删除表。如次给予这些权限:

GRANT SELECT,INSERT,DELETE,UPDATE ON samp_db TO bill@snake.net INDETIFIED BY "rock"

对此更精致的访问控制,你可以在各个表上授权,或甚或在表的每种列上。当你想向储户隐藏一个表的部分时,或你想让一个储户不得不改动特定的列时,列特定权限特有有用。如:

GRANT SELECT ON samp_db.member TO bill@localhost INDETIFIED BY "rock"GRANT UPDATE (expiration) ON samp_db. member TO bill@localhost

第一条句子给予对整个member表的读权限并设置了一个队列第二条句子增多了UPDATE权限,当只对expiration列。没缺一不可再指定队列因为第一条句子一度指定了。

假使你想对if公式满足多个条件列给予权限,指定一个用逗号剪切的列表。对assistant储户增多member表的我的ip地址字段的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_nameabac形式的成语大全引用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表中删除储户记录:

%mysql -u root mysqlmysql>DELETE FROM user ->WHERE User="user_name" and Host="host_name";mysql>FLUSH PRIVILEGES; 

DELETE句子删除储户记录,而FLUSH句子奉告加速器挂载授权表。(当你动用GRANT和REVOKE句子时,表自动挂载。而你第一手改动授权表时不是。)

发表评说 公有条评说
户名: 密码:
检察码: 匿名发表
Baidu