文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
权限控制
要授予用户帐户权限,可以用 GRANT
命令。有撤销用户的权限,可以用 REVOKE
命令。这里以 MySQl 为例,介绍权限控制实际应用。
GRANT
授予权限语法:
GRANT privilege,[privilege],.. ON privilege_level
TO user [IDENTIFIED BY password]
[REQUIRE tsl_option]
[WITH [GRANT_OPTION | resource_option]];
简单解释一下:
- 在
GRANT
关键字后指定一个或多个权限。如果授予用户多个权限,则每个权限由逗号分隔。 ON privilege_level
确定权限应用级别。MySQL 支持 global(*.*
),database(database.*
),table(database.table
)和列级别。如果使用列权限级别,则必须在每个权限之后指定一个或逗号分隔列的列表。user
是要授予权限的用户。如果用户已存在,则GRANT
语句将修改其权限。否则,GRANT
语句将创建一个新用户。可选子句IDENTIFIED BY
允许您为用户设置新的密码。REQUIRE tsl_option
指定用户是否必须通过 SSL,X059 等安全连接连接到数据库服务器。- 可选
WITH GRANT OPTION
子句允许您授予其他用户或从其他用户中删除您拥有的权限。此外,您可以使用WITH
子句分配 MySQL 数据库服务器的资源,例如,设置用户每小时可以使用的连接数或语句数。这在 MySQL 共享托管等共享环境中非常有用。
REVOKE
撤销权限语法:
REVOKE privilege_type [(column_list)]
[, priv_type [(column_list)]]...
ON [object_type] privilege_level
FROM user [, user]...
简单解释一下:
- 在
REVOKE
关键字后面指定要从用户撤消的权限列表。您需要用逗号分隔权限。 - 指定在
ON
子句中撤销特权的特权级别。 - 指定要撤消
FROM
子句中的权限的用户帐户。
GRANT
和 REVOKE
可在几个层次上控制访问权限:
- 整个服务器,使用
GRANT ALL
和REVOKE ALL
; - 整个数据库,使用
ON database.*
; - 特定的表,使用
ON database.table
; - 特定的列;
- 特定的存储过程。
新创建的账户没有任何权限。账户用 username@host
的形式定义, username@%
使用的是默认主机名。MySQL 的账户信息保存在 mysql 这个数据库中。
USE mysql;
SELECT user FROM user;
下表说明了可用于 GRANT
和 REVOKE
语句的所有允许权限:
特权 | 说明 | 级别 | |||||
---|---|---|---|---|---|---|---|
全局 | 数据库 | 表 | 列 | 程序 | 代理 | ||
ALL [PRIVILEGES] | 授予除 GRANT OPTION 之外的指定访问级别的所有权限 | ||||||
ALTER | 允许用户使用 ALTER TABLE 语句 | X | X | X | |||
ALTER ROUTINE | 允许用户更改或删除存储的例程 | X | X | X | |||
CREATE | 允许用户创建数据库和表 | X | X | X | |||
CREATE ROUTINE | 允许用户创建存储的例程 | X | X | ||||
CREATE TABLESPACE | 允许用户创建,更改或删除表空间和日志文件组 | X | |||||
CREATE TEMPORARY TABLES | 允许用户使用 CREATE TEMPORARY TABLE 创建临时表 | X | X | ||||
CREATE USER | 允许用户使用 CREATE USER,DROP USER,RENAME USER 和 REVOKE ALL PRIVILEGES 语句。 | X | |||||
CREATE VIEW | 允许用户创建或修改视图。 | X | X | X | |||
DELETE | 允许用户使用 DELETE | X | X | X | |||
DROP | 允许用户删除数据库,表和视图 | X | X | X | |||
EVENT | 启用事件计划程序的事件使用。 | X | X | ||||
EXECUTE | 允许用户执行存储的例程 | X | X | X | |||
FILE | 允许用户读取数据库目录中的任何文件。 | X | |||||
GRANT OPTION | 允许用户拥有授予或撤消其他帐户权限的权限。 | X | X | X | X | X | |
INDEX | 允许用户创建或删除索引。 | X | X | X | |||
INSERT | 允许用户使用 INSERT 语句 | X | X | X | X | ||
LOCK TABLES | 允许用户对具有 SELECT 权限的表使用 LOCK TABLES | X | X | ||||
PROCESS | 允许用户使用 SHOW PROCESSLIST 语句查看所有进程。 | X | |||||
PROXY | 启用用户代理。 | ||||||
REFERENCES | 允许用户创建外键 | X | X | X | X | ||
RELOAD | 允许用户使用 FLUSH 操作 | X | |||||
REPLICATION CLIENT | 允许用户查询以查看主服务器或从属服务器的位置 | X | |||||
REPLICATION SLAVE | 允许用户使用复制从属从主服务器读取二进制日志事件。 | X | |||||
SELECT | 允许用户使用 SELECT 语句 | X | X | X | X | ||
SHOW DATABASES | 允许用户显示所有数据库 | X | |||||
SHOW VIEW | 允许用户使用 SHOW CREATE VIEW 语句 | X | X | X | |||
SHUTDOWN | 允许用户使用 mysqladmin shutdown 命令 | X | |||||
SUPER | 允许用户使用其他管理操作,例如 CHANGE MASTER TO,KILL,PURGE BINARY LOGS,SET GLOBAL 和 mysqladmin 命令 | X | |||||
TRIGGER | 允许用户使用 TRIGGER 操作。 | X | X | X | |||
UPDATE | 允许用户使用 UPDATE 语句 | X | X | X | X | ||
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论