mysql有关权限的表都有哪几个

时间:2018-01-06 编辑:义俏‍ 手机版

  一、关于MySQL权限的几点常识

  1、MySQL的权限系统主要用来验证用户的操作权限。

  2、在MySQL内部,权限信息存放在MySQL数据库的granttable里。当mysql启动后,granttable里的信息会写入内存。

  3、MySQL 使用user name 加 host name 来作为标识符。

  通过这种标识符,可以用来区分不同host上的相同的user name。

  4、MySQL 权限控制有2种策略:

  1)根据密码是否正确来控制客户端的连接。

  2)假设可以正常connect,server还可以检查每个satement是否有权限去执行。如果只有某张表的select 权限,就不能进行drop 操作。

  5、如果用户的权限改变,当前已连接的会话用户不会受影响,下次登录才会生效。

  二、关于MySQL的几个有关权限表的含义:

  user:用户账号、全局权限

  db:库级别权限

  host:废弃

  tables_priv:表级别权限

  colums_priv:列级别权限

  procs_priv:存储过程和存储函数相关的权限

  proxies_priv:代理用户权限

  三、MySQL用户账号的创建规则

  用户名@主机

  用户名:16字符以内

  主机:

  主机名:www.test.com,mysql

  IP:192.168.2.1

  网络地址:192.168.0.0/255.255.0.0

  通配符:%,192.168.%.%,%.test.com

  四、MySQL的用户权限级别

  服务管理类:super

  库:CREATE

  表:DELETE、ALTER

  列:INSERT、SELECT、UPDATE

  更多级别可参考MySQL官方文档

  五、与权限相关的几个命令

  GRANT 权限,... ON [对象类型] db.{table|routine} TO 'username'@'host' [INDENTIFIED BY 'password'];

  REVOKE 权限,... ON [对象类型] db.{table|routine} FROM 'username'@'host';

  SHOW GRANTS FOR 'username'@'host';

  CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];

  DROP USER 'username'@'host';

  RENAME USER old_name TO new_name;

  六、权限的操作命令举例

  查看当前数据库的所有用户:

  select user,host,password from mysql.user;

  给用户赋予super权限(super和ALL PRIVILEGES都可以):

  GRANT super ON *.* TO 'mysql'@'localhost';

  GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost';

  删除用户的super权限(super和ALL PRIVILEGES都可以):

  REVOKE super ON *.* FROM 'mysql'@'localhost';

  REVOKE ALL PRIVILEGES ON *.* FROM 'mysql'@'localhost';

  查看赋予用户的权限

  SHOW GRANTS FOR 'mysql'@'localhost';

mysql有关权限的表都有哪几个相关推荐