暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL用户权限的管理

数据库BOSS 2021-04-16
435

  • 1.create user

  • 2.grant

  • 3.revoke

  • 4.drop

  • 5.rename

  • 6.show grants for

1.create user

  • 账号的组成方式:用户名+主机
  • 用户名:16字符以内
  • 主机名:可以用主机名和IP地址,也可以用通配符:172.16.1.%

语法

mysql> help create user;
Name: 'CREATE USER'
Description:
Syntax:
CREATE USER [IF NOT EXISTS]
    user [auth_option] [, user [auth_option]] ...
    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
    [WITH resource_option [resource_option] ...]
    [password_option | lock_option] ...

user:
    (see )

auth_option: {
    IDENTIFIED BY '
auth_string'
  | IDENTIFIED WITH auth_plugin
  | IDENTIFIED WITH auth_plugin BY '
auth_string'
  | IDENTIFIED WITH auth_plugin AS '
auth_string'
  | IDENTIFIED BY PASSWORD '
auth_string'
}

tls_option: {
   SSL
 | X509
 | CIPHER '
cipher'
 | ISSUER '
issuer'
 | SUBJECT '
subject'
}

resource_option: {
    MAX_QUERIES_PER_HOUR count
  | MAX_UPDATES_PER_HOUR count
  | MAX_CONNECTIONS_PER_HOUR count
  | MAX_USER_CONNECTIONS count
}

password_option: {
    PASSWORD EXPIRE
  | PASSWORD EXPIRE DEFAULT
  | PASSWORD EXPIRE NEVER
  | PASSWORD EXPIRE INTERVAL N DAY
}

lock_option: {
    ACCOUNT LOCK
  | ACCOUNT UNLOCK
}

复制

举例

CREATE USER jss001@'192.168.%.%' IDENTIFIED BY "jss001";
CREATE USER jss001@localhost IDENTIFIED BY "jss001"-- localhost与具体的主机不一定密码相同
CREATE USER jss002@'%' IDENTIFIED BY "jss002";
CREATE USER jss003@'%';-- 需要后期再授权
SELECT HOST,USER FROM mysql.user;

复制

2.grant

语法

mysql> help grant;
Name: 'GRANT'
Description:
Syntax:
GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user [auth_option] [, user [auth_option]] ...
    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
    [WITH {GRANT OPTION | resource_option} ...]

GRANT PROXY ON user
    TO user [, user] ...
    [WITH GRANT OPTION]

object_type: {
    TABLE
  | FUNCTION
  | PROCEDURE
}

priv_level: {
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
}

user:
    (see https://dev.mysql.com/doc/refman/5.7/en/account-names.html)

auth_option: {
    IDENTIFIED BY '
auth_string'
  | IDENTIFIED WITH auth_plugin
  | IDENTIFIED WITH auth_plugin BY '
auth_string'
  | IDENTIFIED WITH auth_plugin AS '
auth_string'
  | IDENTIFIED BY PASSWORD '
auth_string'
}

tls_option: {
    SSL
  | X509
  | CIPHER '
cipher'
  | ISSUER '
issuer'
  | SUBJECT '
subject'
}

resource_option: {
  | MAX_QUERIES_PER_HOUR count
  | MAX_UPDATES_PER_HOUR count
  | MAX_CONNECTIONS_PER_HOUR count
  | MAX_USER_CONNECTIONS count
}

复制

举例

-- 所有权限授权
GRANT ALL PRIVILEGES ON *.* TO 'jss001'@'localhost'  WITH GRANT OPTION;

mysql> show grants for 'jss001'@localhost;
+-----------------------------------------------------------------------+
| Grants for jss001@localhost                                           |
+-----------------------------------------------------------------------+
GRANT ALL PRIVILEGES ON *.* TO 'jss001'@'localhost' WITH GRANT OPTION |
+-----------------------------------------------------------------------+

GRANT ALL PRIVILEGES ON jssdb001.* TO 'jss001'@'localhost' IDENTIFIED BY 'jss001';  --授权某个库
GRANT ALL PRIVILEGES ON jssdb001.`jss_t1` TO 'jss001'@'localhost' ;  --授权某个表
GRANT ALL PRIVILEGES ON jssdb001.`jss_t1`.`name` TO --授权某个列 'jss001'@'localhost' ; 

SHOW GRANTS FOR jssdb001'jss001';
FLUSH PRIVILEGES;  --刷新权限

-- 一般用户授权
GRANT INSERT,UPDATE,SELECT,DELETE ON jssdb001.`jss_t1` TO 'jss001'@'%';

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,DROP ON jssdb001.* TO jss001@'%'
GRANT REFERENCES ON jssdb001.* TO jss001@'%'-- 外键的权限
GRANT CREATE TEMPORARY TABLES ON jssdb001.* TO jss001@'%'-- 临时表的权限
GRANT INDEX ON jssdb001.* TO jss001@'%'-- 索引
GRANT CREATE VIEW,SHOW VIEW ON jssdb001.* TO jss001@'%'-- 视图
GRANT CREATE ROUTINE,ALTER ROUTINE ON jssdb001.* TO jss001@'%'-- 存储过程
GRANT EVENT,TRIGGER ON jssdb001.* TO jss001@'%'-- 事件,触发器
GRANT LOCK TABLES ON jssdb001.* TO jss001@'%'-- 锁表
GRANT EXECUTE ON PROCEDURE proc_name TO jss001@'%';
GRANT EXECUTE ON FUNCTION func_name TO jss001@'%';

复制

3.revoke

语法

mysql> help revoke;
Name: 'REVOKE'
Description:
Syntax:
REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...

REVOKE ALL [PRIVILEGES], GRANT OPTION
    FROM user [, user] ...

REVOKE PROXY ON user
    FROM user [, user] ...

复制

举例

REVOKE ALL PRIVILEGES ON *.* FROM'jss001'@'localhost'  WITH GRANT OPTION;
REVOKE INSERT,UPDATE,SELECT,DELETE ON jssdb001.`jss_t1` FROM 'jss001'@'%';

复制

4.drop

mysql> SELECT HOST,USER FROM mysql.user;
+-------------+---------------+
| HOST        | USER          |
+-------------+---------------+
| %           | jss002        |
| %           | jss003        |
| %           | root          |
| 192.168.%.% | jss001        |
| localhost   | jss001        |
| localhost   | mysql.session |
| localhost   | mysql.sys     |
| localhost   | root          |
+-------------+---------------+
-- 举例
mysql> drop user jss001@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> drop user jss001@'192.168.%.%';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT HOST,USER FROM mysql.user;
+-----------+---------------+
| HOST      | USER          |
+-----------+---------------+
| %         | jss002        |
| %         | jss003        |
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+

复制

5.rename

--重命名用户
mysql> rename user jss002@'%' to jss0022@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT HOST,USER FROM mysql.user;
+-----------+---------------+
| HOST      | USER          |
+-----------+---------------+
| %         | jss0022       |
| %         | jss003        |
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+

复制

6.show grants for

mysql> grant insert,update,delete,select,create,alter,drop on *.* to jss0022@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for jss0022@'%';
+-----------------------------------------------------------------------------------+
| Grants for jss0022@%                                                              |
+-----------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON *.* TO 'jss0022'@'%' |
+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)


复制


文章转载自数据库BOSS,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论