2014-07-13 15:53:23
来 源
中存储网
mysqlcmd
1.查看mysql的当前登陆用户命令:select user();  selectcurrent_user();mysql> select user();mysql> select current_user();2.查看当前用户权限命令:show grants

1.查看mysql的当前登陆用户

命令:select user();

      select current_user();

mysql> select user();

mysql> select current_user();

2.查看当前用户权限

命令:show grants;

mysql> show grants;

3.查看其它用户权限

命令:show grants for user@host;(user:用户名,host:主机地址)

mysql> show grants for root@localhost;

4.创建用户并授权

命令:GRANT <privileges> ON <what> TO <user> [IDENTIFIED BY "<password>"] [WITH GRANT OPTION];

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

      数据库/数据表/数据列权限:

          Alter: 修改已存在的数据表(例如增加/删除列)和索引;

          Create: 建立新的数据库或数据表;

          Delete: 删除表的记录;

          Drop: 删除数据表或数据库;

          INDEX: 建立或删除索引;

          Insert: 增加表的记录;

          Select: 显示/搜索表的记录;

          Update: 修改表中已存在的记录。

      全局管理权限:

          file: 在MySQL服务器上读写文件;

          PROCESS: 显示或杀死属于其它用户的服务线程;

          RELOAD: 重载访问控制表,刷新日志等;

          SHUTDOWN: 关闭MySQL服务。

      特别的权限:

          ALL: 允许做任何事(和root一样);

          USAGE: 只允许登录--其它什么也不允许做。

      

      <what> 定义了这些权限所作用的区域。

          *.*意味着权限对所有数据库和数据表有效;

          dbName.*意味着对名为dbName的数据库中的所有数据表有效;

          dbName.tblName意味着仅对名为dbName中的名为tblName的数据表有效;

          你甚至还可以在赋予的权限后面的圆括号中用逗号分隔表的字段对特定的字段赋予权限。

      

      <user> 指定可以应用这些权限的用户。

          一个用户通过它登录的用户名和用户使用的计算机的主机名/IP地址来指定,这两个值都可以使用%通配符(例如:root@%将允许使用用户名root从任何机器上登录以享有你指定的权限)。

      

      <password> 指定了用户连接MySQL服务所用的口令。

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

      

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

实例一:建立一个名为mytest的用户,他可以使用口令mytest从localhost连接mysql,并仅仅可以对名为mydb的数据库的全部内容进行操作(并可以将此权限赋予其他用户)

mysql> GRANT ALL ON mydb.*

    -> TO mytest@localhost

    -> IDENTIFIED BY "mytest"

    -> WITH GRANT OPTION;

实例二:现在改变这个用户的口令为123456,命令格式如下:

mysql> GRANT USAGE ON mydb.*

  -> TO mytest@localhost

  -> IDENTIFIED BY "123456";

   注意:我们没有赋予任何另外的权限(the USAGE权限只能允许用户登录),但是用户已经存在的权限不会被改变。

   

实例三:我们建立一个新的名为test01的用户,他可以从test01.taosteel.cn域的任意机器连接到MySQL。他可以更新mydb数据库中users表的username字段和email字段,但是不需要查阅其它的信息。也就是说他对mydb数据库中的user表具有只读的权限(Select),但是他可以对users表的username字段和email字段执行Update操作。

mysql> GRANT select ON mydb.users

    -> TO test01@test01.taosteel.cn

    -> IDENTIFIED BY "123456";

    

mysql> GRANT update(username, email)
    -> ON mydb.users
    -> TO test01@test01.taosteel.cn;

其它实例:

mysql> grant all on mydb.* to 'mytest'@'%' identified by 'mytest'; 允许从任何主机连接

       注:"%"字符起通配符作用

       

mysql> grant all on mydb.* to 'mytest'@%.test.cn identified by 'mytest';允许mytest从test.cn域的任何主机连接

mysql> grant all on mydb.* to 'mytest'@'192.168.1.189' identified by 'mytest';

mysql> grant all on mydb.* to 'mytest'@'192.168.1.%' identified by 'mytest';

mysql> grant all on mydb.* to 'mytest'@'192.168.1.0/17' identified by 'mytest';

       允许从单IP、段IP、或一子网IP登陆

5.撤销用户权限

命令:revoke <privileges> (columns) on <what> from <user>;

     revoke语句只删权限不删用户,用户仍然可以连接服务器。

     要完全删除一个用户必须用一条delete语句明确从user表中删除用户记录,如下:

     delete from user where user='mytest';

     flush privileges; 重载授权表

注意:使用grant和revoke语句时,表自动重载,而你直接修改授权表时不是。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。