<p>答案是使用REVOKE语句撤销权限,如REVOKE ALL PRIVILEGES ON my_database.* FROM 'dev_user'@'localhost'; 可精细控制权限,撤销后通常无需FLUSH PRIVILEGES,但可执行以确保生效,查看权限用SHOW GRANTS,权限调整靠GRANT与REVOKE组合操作。</p>

在MySQL中,撤销用户对特定数据库的权限,核心操作就是使用
REVOKE
解决方案
要撤销MySQL用户对特定数据库的权限,你需要用到
REVOKE
REVOKE [权限类型] ON [数据库名].[表名或*] FROM '用户名'@'主机名';
这里有几个关键点:
SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
ALL PRIVILEGES
ALL PRIVILEGES
database_name.*
database_name.table_name
举几个实际的例子,这应该能让你更清晰:
撤销用户dev_user
my_database
REVOKE ALL PRIVILEGES ON my_database.* FROM 'dev_user'@'localhost';
这条命令执行后,
dev_user
my_database
撤销用户report_user
sales_data
INSERT
UPDATE
SELECT
REVOKE INSERT, UPDATE ON sales_data.* FROM 'report_user'@'localhost';
你看,我们可以非常精细地控制,只拿掉他不需要或不该有的操作权限。这在很多场景下特别有用,比如一个报表用户,他只需要读取数据,就不应该有修改的权限。
撤销用户app_user
user_info
customers
DELETE
REVOKE DELETE ON user_info.customers FROM 'app_user'@'%';
这里的
%
撤销权限后,通常情况下,MySQL会立即更新内部的权限表,所以用户下次连接或执行操作时,新的权限设置就会生效。
MySQL中,撤销用户权限后是否需要刷新权限?
关于撤销权限后是否需要立即执行
FLUSH PRIVILEGES
REVOKE
mysql
user
db
tables_priv
FLUSH PRIVILEGES
但是,凡事总有例外,或者说一些特殊情况。我通常会在以下几种情况考虑或者干脆就执行一下
FLUSH PRIVILEGES
FLUSH PRIVILEGES
mysql
FLUSH PRIVILEGES
FLUSH PRIVILEGES
所以,我的建议是,对于标准的
REVOKE
如何查看MySQL用户当前拥有哪些权限?
了解一个用户当前到底有哪些权限,这在权限管理中是至关重要的一步,尤其是在你进行授予或撤销操作之后,需要验证结果时。最直接、最常用的方法就是使用
SHOW GRANTS
语法很简单:
SHOW GRANTS FOR '用户名'@'主机名';
举个例子,要查看
dev_user
localhost
SHOW GRANTS FOR 'dev_user'@'localhost';
执行这条命令后,你会得到一个结果集,每行代表一个授予的权限。比如,你可能会看到类似这样的输出:
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for dev_user@localhost | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `dev_user`@`localhost` | | GRANT SELECT, INSERT, UPDATE ON `my_database`.* TO `dev_user`@`localhost` | | GRANT SELECT ON `another_database`.`some_table` TO `dev_user`@`localhost` | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
这清晰地展示了
dev_user
GRANT USAGE ON *.* TO 'dev_user'@'localhost'
GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'dev_user'@'localhost'
my_database
SELECT
INSERT
UPDATE
GRANT SELECT ON another_database.some_table TO 'dev_user'@'localhost'
another_database
some_table
SELECT
通过这种方式,你可以一目了然地确认用户权限是否符合你的预期。我个人觉得,在任何权限变更后,都应该养成
SHOW GRANTS
除了撤销,MySQL用户权限还可以如何修改或调整?
当我们谈论“修改”或“调整”MySQL用户权限时,这通常不是一个单一的命令就能完成的,而是
GRANT
REVOKE
MODIFY PRIVILEGES
通过GRANT
SELECT
INSERT
GRANT
GRANT INSERT ON my_database.* TO 'dev_user'@'localhost';
即使这个用户已经有了其他权限,
GRANT
通过REVOKE
REVOKE
组合使用REVOKE
GRANT
REVOKE ALL PRIVILEGES ON database_name.* FROM 'user'@'host';
REVOKE ALL PRIVILEGES ON *.*
GRANT
ALTER USER
ALTER USER
ALTER USER 'dev_user'@'localhost' IDENTIFIED BY 'new_secure_password';
这只是修改了用户密码,不会影响他在数据库上的读写权限。
所以,总结来说,MySQL的权限“修改”更多是一种管理策略,通过
GRANT
REVOKE
以上就是Mysql用户权限回收与修改_mysql如何撤销用户特定数据库权限的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号