42501 权限不足
如果遇到如下所示的错误消息,则表示您无权访问特定的表或视图。
mydb=> select * from students;
ERROR: permission denied for relation students
我们必须为有问题的用户授予所有权限。此外,需要以超级用户或具有可授予权限的用户身份进行授权。
- 以超级用户或具有可授予权限的用户连接。
- 连接到表所在的数据库。
- 然后,运行以下命令向用户david授予表“students”上的所有权限。
GRANT ALL PRIVILEGES ON TABLE students TO david;
如果遇到如下所示的错误消息,则表示您无权访问特定的模式,即使您对该模式的表具有查询权限。
mydb=> select * from scott.students;
ERROR: permission denied for schema scott
默认情况下,用户无法访问他们不拥有的模式中的任何对象。若要允许这样做,模式的所有者必须授予模式的使用权限。我们必须向有问题的用户授予对该模式的使用权限。此外,需要以超级用户或具有可授予权限的用户身份进行授权。
- 以超级用户或具有可授予权限的用户连接。
- 连接到模式所在的数据库。
- 然后,运行以下命令以向用户david授予对该模式的使用权限。
GRANT USAGE ON SCHEMA scott TO david;
如果您遇到如下所示的错误消息,则表示当您尝试替换现有函数的当前定义时,您不是该特定函数的所有者。
CREATE OR REPLACE FUNCTION increment(i integer)
RETURNS integer AS $$
BEGIN
RETURN i + 1;
END $$ LANGUAGE plpgsql;
ERROR: must be owner of function increment
您必须拥有函数才能替换它(这包括成为对象所有者角色的成员)。若要替换现有定义,请使用作为该函数所有者的用户连接到数据库。