MySQL:权限控制
2023-12-30 05:21:20
要授予用户帐户权限,可以用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语句的所有允许权限:?


创建账户
CREATE USER myuser IDENTIFIED BY 'mypassword';
修改账户名
UPDATE user SET user='newuser' WHERE user='myuser';
FLUSH PRIVILEGES;
-- 重命名 RENAME USER 原来名字 TO 新的名字
RENAME USER bing1 TO bing2
删除账户
DROP USER myuser;
查看权限
SHOW GRANTS FOR myuser;
授予权限
GRANT SELECT, INSERT ON *.* TO myuser;
-- 用户授权ALL PRIVILEGES全部权限,库,表
-- ALL PRIVILEGES除了给别人授权,其他都能够干
GRANT ALL PRIVILEGES ON *.* TO myuser;
删除权限
REVOKE SELECT, INSERT ON *.* FROM myuser;
更改密码
SET PASSWORD FOR myuser = 'mypass';
?
文章来源:https://blog.csdn.net/AI_BING_/article/details/135254471
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!