[MySQL]查看用户权限与GRANT用法

摘自:http://apps.hi.baidu.com/share/detail/15071849mysql

 

 

查看用户权限sql

show grants for 你的用户

好比:
show grants for root@'localhost';数据库

Grant 用法服务器

 

 

 

GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8DA28D49245BF69FC79A86EB';
GRANT ALL PRIVILEGES ON `discuz`.* TO 'discuz'@'localhost';app

我先按个人理解解释一下上面两句的意思
创建一个只能够在本地登录的 不能操做的用用户名 discuz 密码为 ***** 已经加密了的
而后第二句的意思是 ,给这个discuz用户操做discuz数据库的全部权限加密

使用GRANT.net

GRANT命令用来创建新用户,指定用户口令并增长用户权限。其格式以下:线程

mysql> GRANT <privileges> ON <what>
-> TO <user> [IDENTIFIED BY "<password>"]
-> [WITH GRANT OPTION];ssr


  正如你看到的,在这个命令中有许多待填的内容。让咱们逐一地对它们进行介绍,并最终给出一些例子以让你对它们的协同工做有一个了解。日志

  <privileges>是一个用逗号分隔的你想要赋予的权限的列表。你能够指定的权限能够分为三种类型:

  数据库/数据表/数据列权限: Alter: 修改已存在的数据表(例如增长/删除列)和索引。
Create: 创建新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 创建或删除索引。
Insert: 增长表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。

  全局管理权限:

file: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。

  特别的权限:

ALL: 容许作任何事(和root同样)。
USAGE: 只容许登陆--其它什么也不容许作。


  这些权限所涉及到的MySQL的特征,其中的一些咱们至今还没看到,而其中的绝大部分是你所熟悉的。

<what> 定义了这些权限所做用的区域。*.*意味着权限对全部数据库和数据表有效。dbName.*意味着对名为dbName的数据库中的全部数据表有效。 dbName.tblName意味着仅对名为dbName中的名为tblName的数据表有效。你甚至还能够经过在赋予的权限后面使用圆括号中的数据列的列表以指定权限仅对这些列有效(在后面咱们将看到这样的例子)。

  <user>指定能够应用这些权限的用户。在MySQL中,一个用户经过它登陆的用户名和用户使用的计算机的主机名/IP地址来指定。这两个值均可以使用%通配符(例如kevin@%将容许使用用户名kevin从任何机器上登陆以享有你指定的权限)。

  <password>指定了用户链接MySQL服务所用的口令。它被用方括号括起,说明IDENTIFIED BY "<password>"在GRANT命令中是可选项。这里指定的口令会取代用户原来的密码。若是没有为一个新用户指定口令,当他进行链接时就不须要口令。

这个命令中可选的WITH GRANT OPTION部分指定了用户能够使用GRANT/REVOKE命令将他拥有的权限赋予其余用户。请当心使用这项功能--虽然这个问题可能不是那么明显!例如,两个都拥有这个功能的用户可能会相互共享他们的权限,这也许不是你当初想看到的。

  让咱们来看两个例子。创建一个名为dbmanager的用户,他能够使用口令managedb从server.host.net链接 MySQL,并仅仅能够访问名为db的数据库的所有内容(并能够将此权限赋予其余用户),这能够使用下面的GRANT命令:

mysql> GRANT ALL ON db.*
-> TO dbmanager@server.host.net
-> IDENTIFIED BY "managedb"
-> WITH GRANT OPTION;


如今改变这个用户的口令为funkychicken,命令格式以下:
   mysql> GRANT USAGE ON *.*
   -> TO dbmanager@server.host.net
   -> IDENTIFIED BY "funkychicken";

请注意咱们没有赋予任何另外的权限(the USAGE权限只能容许用户登陆),可是用户已经存在的权限不会被改变。

  如今让咱们创建一个新的名为jessica的用户,他能够从host.net域的任意机器链接到MySQL。他能够更新数据库中用户的姓名和 email地址,可是不须要查阅其它数据库的信息。也就是说他对db数据库具备只读的权限(例如,Select),可是他能够对Users表的name列和email列执行Update操做。命令以下:

mysql> GRANT Select ON db.*
-> TO jessica@%.host.net
-> IDENTIFIED BY "jessrules";
mysql> GRANT Update (name,email) ON db.Users
-> TO jessica@%.host.net;

  请注意在第一个命令中咱们在指定Jessica能够用来链接的主机名时使用了%(通配符)符号。此外,咱们也没有给他向其余用户传递他的权限的能力,由于咱们在命令的最后没有带上WITH GRANT OPTION。第二个命令示范了如何经过在赋予的权限后面的圆括号中用逗号分隔的列的列表对特定的数据列赋予权限。

相关文章
相关标签/搜索