MySQL的权限表共有5个,分别是()。

上周我学习了MySQL权限。

MySQL有5 个权限表。

它们分别是user、db、tables_priv、columns_priv和procs_priv。

所以是 D。

这取决于你。

mysql有没有user表

上周,一位客户向我询问MySQL用户表的情况,说他有点困惑,尤其是权限方面。
我给了他一击,你觉得这可能吗?
用户专栏 这是最核心的核心。
想一想,Host、User、authentication_string(密码)必须完全匹配,用户才能登录。
我2 02 3 年在北京的一个公司项目里换了用户,我只操作了这三个字段。
例如,上次用户忘记密码时,我必须使用 ALTER USER 语句来更改authentication_string 值,否则我将无法直接连接。

真相专栏 这部分是最麻烦的。
您指定的以 _priv 结尾的字段(如 Select_priv 和 Insert_priv)定义全局权限。
我曾见过一个案例,2 02 2 年,在上海的一家购物中心,一个普通查询用户由于权限设置不正确,能够删除系统中的数据。
然后我发现Grant_priv设置为Y,他能够授予其他人权限。
ENUM类型确实很麻烦,'N'和'Y'转换时很容易出错。
我们通常使用GRANT/REVOKE语句,这比手动更改表要简单得多。

安全专栏 此区域主要涉及 SSL 插件和密码。
记得去年在杭州调试过一次。
有一个用户的password_expired='Y'。
结果,用户仍然可以登录,但无法注销该操作。
后来查文档后发现,密码过期只是表示无法进行操作,并不是禁止进入。
检查 SSL 时,您所说的 SHOW VARIABLES LIKE 'have_openssl' 是正确的。
我也经常使用这个。
但是,一些较旧的系统可能仍然使用 old_passwords 插件,因此您需要单独查看它。

资源控制栏这是最实用的功能之一。
比如max_questions,我2 02 3 年在深圳帮一个客户设置了它,防止有人写脚本疯狂提问,搞垮服务器。
默认值是0,没有限制,但是大多数公司都会设置一个上限。
超过限制后,用户将被暂时锁定,并在下一个周期自动恢复。
此功能非常适合成本控制或保护核心业务免遭滥用。

你问如何使用这个?其实主要是GRANT/CANCEL方法,尤其是权限。
理解它比直接改变表格更容易。
但有时在紧急情况下,例如暂时授予完全许可,实时更改时间表是相当快的。
不过,这取决于你,每个场景的需求都不同。

如何在mysql中管理跨库访问权限

前几天我在办公室调试系统,发现了一个奇怪的问题。
用户A可以访问db1 中的表,但甚至无法打开db2 ,即使他添加了权限。
等等,看起来我忘记添加共享数据库查询视图的权限。
对于 MySQL,细节非常重要。

GRANT语句实际上是一件好事。
上次我给report_user添加了权限,直接全部使用,但是权限冲突了好久。
后来改成单独数据库分配,每个数据库都有GRANT,就这样了。
记住project_%通配符,它​​会帮你省去很多麻烦。
上次我使用通配符给开发团队设置权限时,不小心给了测试库,差点酿成重大错误。
所以通配符使用起来很方便,但是需要更加小心。

FLUSHPRIVILEGES 这太棒了。
有一次我更改了权限并忘记更新缓存。
结果,新的权限从未生效。
我急得满头大汗,终于想起了这件事。
建议每次更改权限后都将其清除,以避免出现问题。

最大的问题是检查权限。
在最新的月度和解中,财政部表示对特定报告的许可不正确。
我翻了一下日志,发现是三个月前临时添加的,早就应该删除了。
因此,建议每三个月审查一次权限,以免出了问题才后悔。
使用 SHOW GRANTS 验证用户权限。
如果你经常使用这个命令,你就会知道问题出在哪里。

其实MySQL的权限系统并没有那么复杂,只是username@host的组合而已。
刚开始学习的时候,我分不清跨表访问和同一个数据库中的共享数据库访问的区别。
后来发现根本没有这个概念,都是自定义权限。
实施许可尤其重要。
如果没有此权限,则无法运行存储过程。
我有一个朋友忘记添加EXECUTE,他的整个报告系统瘫痪了。

现在想想,管理共享数据库的访问权限的关键就这么几个步骤:找到需要的库,用GRANT一一分配,明智地使用通配符,修改后记住FLUSH,最后按照最小权限原则删除多余的部分。
就这么简单,但是在实际操作中,你会遇到总是出现各种奇怪的问题。
例如,用户明明有权限,但仍然无法访问。
最后发现宿主范围太有限,不得不再次更换。

等一下,我突然想到,财务部提到的报告权限问题被删除了吗?算了,我明天再来看看。