【发布时间】:2011-12-03 11:38:55
【问题描述】:
有一个安全例程,该例程来自一组用户名、密码和权限
- 删除用户
- 创建(相同的)用户
- 授予对表、过程等的访问权限
如果没有用户存在,它工作正常。
如果用户已经存在,那么用户就在那里,但是没有密码,除了最后一个创建的用户之外。
mysql> select user, password from mysql.user where user like 'm%'; +------------+------------------------------------ --------+ |用户 |密码 | +------------+------------------------------------ --------+ |按摩150 | *21A196706D99436A1C8163A98AE0687C432C37E2 | |登录 | *DE069F0ED7E311D173CB01C3DD136D282E66048D | |选择 | | | mdml | | +------------+------------------------------------ --------+ 4 行一组(0.00 秒)当使用用户和权限时,是否有某种sync 进程需要在MySQL 中运行?我需要删除它们,等待几秒钟,然后重新创建吗?还是什么?
(代码在 postgreSQL 和 Oracle 中运行良好。针对 MySQL 对 GRANT 和 REVOKE 的限制进行了一些修改,即 GRANT 是在逐个表的基础上(而不是 SCHEMA 范围)进行的,因此随后发布的 REVOKE 可以正常工作。 )
KLUDGE 解决方案
为用户设置GRANTs和REVOKEs后,再通过用户和SET PASSWORD。丑陋,但它有效。
仍在寻找对正在发生的事情的更好理解。
正确的 KLUDGE 解决方案
根据下面的答案(谢谢!)MySQL 有一个非 ANSI 命令 FLUSH PRIVILEGES。在 DROP USER 和 CREATE USER 之前发出此问题,并且 MySQL 不再删除用户密码。
【问题讨论】:
标签: mysql security permissions