qq591577286 发表于 2018-10-11 06:30:51

MySQL 用户管理

  合理的管理DB用户权限是一个DBA的基本工作,这里整理一下MySQL用户管理的相关内容。
  CREATE USER、DROP USER、RENAME USER
  用来创建、删除、修改MySQL用户
  GRANT
  为给定MySQL用户分配权限
  REVOKE 撤销已给定MySQL用户的相关权限
  SET PASSWORD 为MySQL用户配置密码
  SHOW GRANTS 显示给定MySQL用户的权限
  相关用户及权限的信息都会记录在MySQL数据库中的权限表中,如下:
  user 可连接到数据库的用户及其全局权限
  db 数据库级权限
  table_priv 数据表级权限
  columns_priv 数据列级权限
  procs_priv 与存储例成相关的权限
  MySQL用户管理
  创建MySQL用户(拥有创建MySQL 用户权限的用户才可以创建,下面例子以root用户为测试用户)
mysql> create user kevin@'%'>
Query OK, 0 rows affected (0.00 sec)mysql> select user, host, password from mysql.user where user='kevin';  
+-------+------+-------------------------------------------+| user| host | password                                  |
  
+-------+------+-------------------------------------------+| kevin | %    | *2447D497B9A6A15F2776055CB2D1E9F86758182F |
  
+-------+------+-------------------------------------------+1 row in set (0.00 sec)
  kevin@’%’ 用户名+主机名
  % 字符通配符,表示任意字符
  MySQL通过配置主机名来限制通过索要创建的MySQL用户登录的主机,%表示任意主机都可以登入。
  kevin@10.8.1.% 表示10.8.1段的主机可以登入
  kevin@’Oracle.com.cn’ 表示主机名为oracle.com.cn的主机可以通过kevin用户登入。
  对MySQL账户授权
  syntax:
  GRANT privileges (columns)
  on what
  TO account
  
  
  
  如果grant语句中账户不存在则先创建相应账户,再把给定权限分配给它。
  privilege 授予账户的权限。
  what 权限的级别。 最高级别是全局,给定的权限用于所有的数据库和所有的数据表。同时,权限还可以设置为数据库、表、列及存储过程级别。
  account 被授予权限的账号。
  password 修改账户的口令
  columns 权限作用列
  REQUIRE和WITH子句是可选的,require子句用于使用SSL进行安全连接。WITH子句用来授予GRANT OPTION权限(允许把账户自己的权限授予别人)。
  账户权限整理
  数据库管理权限

  CREATE USER FILE(READ OR WRITE MYSQL SERVER’S FILES) GRANT OPTION>  数据库对象权限
  ALTER/ALTER ROUTINE/CREATE/CREATE ROUTINE/CREATE TEMPORARY TABLES/CREATE VIEWS/DELETE/DRPOP/EVENT/EXECUTE/INDEX/INSERT/LOCK TABLES/REFERENCE/SELECT/SHOW VIEW/TRIGGER/UPDATE
  其它权限
  ALL ALL operations inluding GRANT privilege
  USAGE a special privilege and means NULL privilege
  用户在授权时必须拥有相应的权限及GRANT OPTION权限。同时,MySQL权限范围包括数据库系统全局,数据库,数据表,数据列等多种范围,付权时通过ON子句控制赋予权限的范围,如下:
  ON . 全局权限
  ON * 如果没有指定数据库(use db),则是全局权限,否则是是定数据库默认对象的权限。
  ON db_name.* 数据库级别权限
  ON db_name.tbl_name 数据库表级权限
  ON tbl_name 数据表级权限
  ON db_name。routie_name 存储例程权限
  查看用户拥有的权限。
mysql> show grants for system;  +----------------------------------------------------------------------------------------------------------------+| Grants for system@%                                                                                          |

  +----------------------------------------------------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO 'system'@'%'>  +----------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)12345671234567
  撤销权限和删除用户
  REVOKE privileges ON what FROM account;
  修改用户的口令
  SET PASSWORD FOR system@’%’ = PASSWORD(‘PASSWD’)
  当然,增加、修改用户的权限也可以直接insert、update mysql.user表,这些操作就需要感性却的初学者试一下了。


页: [1]
查看完整版本: MySQL 用户管理