我绝对不是PostgreSQL的新手。我有以下疑问:
我能够使用
登录到PostgreSQLsudo -u postgres psql postgres
我创建了一个test_db
数据库,并在其中创建了一个名为test_tbl
的表。我还创建了一个用户test
,并为其提供了以下特权:
GRANT CONNECT ON DATABASE test_db TO test;
GRANT SELECT, INSERT, UPDATE, DELETE ON test_tbl TO test;
如何以test_db
用户身份登录test
数据库?我只能以postgres
身份登录。如果尝试以test
身份登录,则会出现以下错误-
ubuntu@ip-10-81-1-44:~$ psql -U test -d test_db
psql: FATAL: Peer authentication failed for user "test"
test_tbl
加密表test
中的特定列?答案 0 :(得分:0)
您无需sudo
更改用户,可以使用-U
标志在连接时指定,例如:
psql -U test -d test_db
这将尝试以用户test_db
的身份将您连接到数据库test
,如果需要输入密码,则会提示您,此处列出了其他标志,例如主机,端口等
答案 1 :(得分:0)
您将必须在pg_hba.conf
中创建一个条目,以允许用户进入数据库。不要忘记重新加载PostgreSQL。
要加密列,您需要执行加密和解密的应用程序代码。
也许您可以获得列特权:
GRANT SELECT ON test_tbl TO test;
GRANT SELECT (col1, col2, ...) ON test_tbl TO PUBLIC;
在这里列出除要隐藏的列以外的所有列。
然后,只有用户test
才能SELECT
该列。
另一种方法是仅将SELECT
限制为test
,并向其他人提供一个视图,该视图显示除隐藏列之外的所有内容。