如何在Informix中更改用户名?

时间:2018-10-10 10:48:18

标签: sql informix

如何更改Informix中的用户名?

select * from sysusers;下面的列表

username  John.Doe
usertype  R
priority  5
password
defrole   admin

我想将用户john.doe的用户名更新为小写,但似乎我们不能像往常一样对它update sysusers set username = xxx进行更新。我们应该使用什么命令来执行此操作?

2 个答案:

答案 0 :(得分:2)

有人跑了

GRANT RESOURCE TO "John.Doe";

您需要撤消他们的RESOURCE特权:

REVOKE RESOURCE FROM "John.Doe";

但这使John.Doe拥有CONNECT特权,您还需要撤销该特权。如果您撤消了某人的DBA特权,那么他们也保留CONNECT特权(而不是RESOURCE特权)。

REVOKE CONNECT FROM "John.Doe";

然后,您可以将RESOURCE特权重新授予小写的用户名:

GRANT RESOURCE TO "john.doe";

请注意,用户名必须每次都引用一次,以保持区分大小写,并且由于中间john.doe的原因,John.Doe.都不是有效的标识符。 / p>

这些更改仅影响SysUsers表。由John.Doe创建的任何资源仍归John.Doe所有,而不归john.doe所有。无法更改对象的所有权。解决方法是使用正确的所有者删除并重新创建对象。请注意,删除对象会丢失对该对象授予的所有权限,并且还会破坏在放置的表(或视图)之上构建的视图。

答案 1 :(得分:1)

您不能。尽管有目录表名称,该表中的条目仍代表该用户(而不是实际用户)的Informix数据库级特权。 GRANTREVOKE SQL命令处理这些条目。

我能想到的唯一方法是为用户REVOKE John.Doe授予所有数据库特权,并向用户GRANT授予john.doe相同的特权。请注意,用户John.Doe拥有的任何对象将继续属于John.Doe