返回介绍

权限控制

发布于 2024-08-17 15:49:00 字数 7733 浏览 0 评论 0 收藏 0

要授予用户帐户权限,可以用 GRANT 命令。有撤销用户的权限,可以用 REVOKE 命令。这里以 MySQl 为例,介绍权限控制实际应用。

GRANT 授予权限语法:

GRANT privilege,[privilege],.. ON privilege_level
TO user [IDENTIFIED BY password]
[REQUIRE tsl_option]
[WITH [GRANT_OPTION | resource_option]];

简单解释一下:

  1. GRANT 关键字后指定一个或多个权限。如果授予用户多个权限,则每个权限由逗号分隔。
  2. ON privilege_level 确定权限应用级别。MySQL 支持 global( *.* ),database( database.* ),table( database.table )和列级别。如果使用列权限级别,则必须在每个权限之后指定一个或逗号分隔列的列表。
  3. user 是要授予权限的用户。如果用户已存在,则 GRANT 语句将修改其权限。否则, GRANT 语句将创建一个新用户。可选子句 IDENTIFIED BY 允许您为用户设置新的密码。
  4. REQUIRE tsl_option 指定用户是否必须通过 SSL,X059 等安全连接连接到数据库服务器。
  5. 可选 WITH GRANT OPTION 子句允许您授予其他用户或从其他用户中删除您拥有的权限。此外,您可以使用 WITH 子句分配 MySQL 数据库服务器的资源,例如,设置用户每小时可以使用的连接数或语句数。这在 MySQL 共享托管等共享环境中非常有用。

REVOKE 撤销权限语法:

REVOKE   privilege_type [(column_list)]
        [, priv_type [(column_list)]]...
ON [object_type] privilege_level
FROM user [, user]...

简单解释一下:

  1. REVOKE 关键字后面指定要从用户撤消的权限列表。您需要用逗号分隔权限。
  2. 指定在 ON 子句中撤销特权的特权级别。
  3. 指定要撤消 FROM 子句中的权限的用户帐户。

GRANTREVOKE 可在几个层次上控制访问权限:

  • 整个服务器,使用 GRANT ALLREVOKE ALL
  • 整个数据库,使用 ON database.*
  • 特定的表,使用 ON database.table
  • 特定的列;
  • 特定的存储过程。

新创建的账户没有任何权限。账户用 username@host 的形式定义, username@% 使用的是默认主机名。MySQL 的账户信息保存在 mysql 这个数据库中。

USE mysql;
SELECT user FROM user;

下表说明了可用于 GRANTREVOKE 语句的所有允许权限:

特权说明级别     
全局数据库程序代理  
ALL [PRIVILEGES]授予除 GRANT OPTION 之外的指定访问级别的所有权限      
ALTER允许用户使用 ALTER TABLE 语句XXX   
ALTER ROUTINE允许用户更改或删除存储的例程XX  X 
CREATE允许用户创建数据库和表XXX   
CREATE ROUTINE允许用户创建存储的例程XX    
CREATE TABLESPACE允许用户创建,更改或删除表空间和日志文件组X     
CREATE TEMPORARY TABLES允许用户使用 CREATE TEMPORARY TABLE 创建临时表XX    
CREATE USER允许用户使用 CREATE USER,DROP USER,RENAME USER 和 REVOKE ALL PRIVILEGES 语句。X     
CREATE VIEW允许用户创建或修改视图。XXX   
DELETE允许用户使用 DELETEXXX   
DROP允许用户删除数据库,表和视图XXX   
EVENT启用事件计划程序的事件使用。XX    
EXECUTE允许用户执行存储的例程XXX   
FILE允许用户读取数据库目录中的任何文件。X     
GRANT OPTION允许用户拥有授予或撤消其他帐户权限的权限。XXX XX
INDEX允许用户创建或删除索引。XXX   
INSERT允许用户使用 INSERT 语句XXXX  
LOCK TABLES允许用户对具有 SELECT 权限的表使用 LOCK TABLESXX    
PROCESS允许用户使用 SHOW PROCESSLIST 语句查看所有进程。X     
PROXY启用用户代理。      
REFERENCES允许用户创建外键XXXX  
RELOAD允许用户使用 FLUSH 操作X     
REPLICATION CLIENT允许用户查询以查看主服务器或从属服务器的位置X     
REPLICATION SLAVE允许用户使用复制从属从主服务器读取二进制日志事件。X     
SELECT允许用户使用 SELECT 语句XXXX  
SHOW DATABASES允许用户显示所有数据库X     
SHOW VIEW允许用户使用 SHOW CREATE VIEW 语句XXX   
SHUTDOWN允许用户使用 mysqladmin shutdown 命令X     
SUPER允许用户使用其他管理操作,例如 CHANGE MASTER TO,KILL,PURGE BINARY LOGS,SET GLOBAL 和 mysqladmin 命令X     
TRIGGER允许用户使用 TRIGGER 操作。XXX   
UPDATE允许用户使用 UPDATE 语句XXXX  
USAGE相当于“没有特权”     

创建账户

CREATE USER myuser IDENTIFIED BY 'mypassword';

修改账户名

UPDATE user SET user='newuser' WHERE user='myuser';
FLUSH PRIVILEGES;

删除账户

DROP USER myuser;

查看权限

SHOW GRANTS FOR myuser;

授予权限

GRANT SELECT, INSERT ON *.* TO myuser;

删除权限

REVOKE SELECT, INSERT ON *.* FROM myuser;

更改密码

SET PASSWORD FOR myuser = 'mypass';

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文