用户管理
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@ 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@ INDETIFIED BY \"rock\"
对于更精致的访问控制,你可以在各个表上授权,或甚至在表的每个列上。当你想向用户隐藏一个表的部分时,或你想让一个用户只能修改特定的列时,列特定权限非常有用。如:
GRANT SELECT ON samp_mber TO bill@localhost INDETIFIED BY \"rock\"GRANT UPDATE (expiration) ON samp_db. member TO bill@localhost
第一条语句授予对整个member表的读权限并设置了一个口令,第二条语句增加了UPDATE权限,当只对expiration列。没必要再指定口令,因为第一条语句已经指定了。
如果你想对多个列授予权限,指定一个用逗号分开的列表。例如,对assistant用户增加member表的地址字段的UPDATE权限,使用如下语句,新权限将加到用户已有的权限中:
GRANT UPDATE (street,city,state,zip) ON samp_db TO assistant@localhost
通常,你不想授予任何比用户确实需要的权限宽的权限。然而,当你想让用户能创建一个临时表以保存中间结果,但你又不想让他们在一个包含他们不应修改内容的数据库中这样做时,发生了要授予在一个数据库上的相对宽松的权限。你可以通过建立一个分开的数据库(如tmp)并授予开数据库上的所有权限来进行。例如,如果你想让来自域中主机的任何用户使用tmp数据库,你可以发出这样的GRANT语句:
GRANT ALL ON tmp.* TO \"\"@
在你做完之后,用户可以创建并用l_name形式引用tmp中的表(在用户指定符中的\"\"创建一个匿名用户,任何用户均匹配空白用户名)。
1.3 用户应该被允许管理权限吗?
你可以允许一个数据库的拥有者通过授予数据库上的所有拥有者权限来控制数据库的访问,在授权时,指定WITH GRANT OPTION。例如:如果你想让alicia能从域的任何主机连接并具有sales数据库中所有表的管理员权限,你可以用如下 GRANT语句:
GRANT ALL ON sales.* TO alicia@%. 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 mysqlmysqlDELETE FROM user -WHERE User=\"user_name\" and Host=\"host_name\";mysqlFLUSH PRIVILEGES;
DELETE语句删除用户记录,而FLUSH语句告诉服务器重载授权表。(当你使用GRANT和REVOKE语句时,表自动重载,而你直接修改授权表时不是。)
通化哪家白癜风医院好长沙妇科治疗哪家好
艾拉莫德片哪里有卖的
- 上一页:用户密码为弱口令的攻击的
- 下一页:的数据同物业
-
苏州大学和河海大学,谁的统治力更更胜一筹?
相信大家在前不久的报考里,也是绞尽脑汁,反复相对所选全国高校里哪所全...
2024-09-01
-
我拼命的在高呼你却装做看不见
我拚命的在呼喊你却装认真看不到,时长的可怜路却从末平坦,昨天泪点滴成...
2024-07-11
-
谢娜终于翻车!闷声干大事却被吐槽,新书封面照身着白裙变得好优雅
钟汉良最近的出头大盛,在浪姐的舞台上成功复单单,让大家也看着了她的另...
2024-04-26
-
暑假将至,提前给孩子杀敌这10个小规矩
为了我们的有益 特地即时接种新冠HIV 开始陆陆续续放暑假了 对于夫妻俩们...
2024-03-07
-
山水重逢,愈见人为 ——KOLON SPORT 可隆举办ODUMAK露营活动
紧接4月末发布全新轻巧的产品、希望大家亲密人为之后,韩国高端的产品品...
2024-02-14
-
为啥你家大头不好带?多是因为怀孕时你做过这些事,妈妈都该重视
在女性受孕再次,由于细胞内内分泌的巨大变化使得她们的一些乳制品习惯性...
2024-02-08