如何向任意用户授予对所有函数和视图的读取/选择访问权限?
我使用psql --user=postgres -d mydb -f myview.sql创建几个函数和视图,然后运行:
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
在被授予所有权限之后,我希望myuser现在能够访问postgres用户创建的函数和视图。然而,当我尝试用myuser访问它们时,我得到了一个“关系的权限被拒绝...”错误。为什么会这样呢?
这是我的init.sql文件:
DROP DATABASE IF EXISTS my_data;
CREATE DATABASE my_data;
DROP USER IF EXISTS u;
CREATE USER u WITH PASSWORD 'secret';
GRANT ALL ON ALL TABLES IN SCHEMA public TO u;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO u;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO u;
\c my_d
通过执行以下操作,我能够运行psql:
Davids-d david$ psql --u postgres
Password for user postgres:
psql (9.4.18)
Type "help" for help.
postgres=#
但是,当我运行以下命令时,会得到一个错误:
Davids-iMac:datadocs david$ sudo -u postgres psql -f resources/postgresql/initdb.sql
could not identify current directory: Permission deni
当我在我的剧本中像这样发出psql命令时:
- name: Run psql to pull in initial config data
become_method: sudo
become: yes
become_user: postgres
command: psql -U postgres -w eclaim < /opt/eclaim_revamp/sql_scripts/initial_config.sql
它需要很长时间才能完成,看起来像是挂起的,但是当我使用shell时,它可以通过:
- name: Run psql to pull in initial
当我运行以下命令时,我正在学习这个教程,,它是关于p注浆的:
psql -U user -d postgres -f ~/Desktop/pgrouting-workshop/data/sampledata_routing.sql
我说了下列错误:
/var/lib/postgresql/Desktop/pgrouting-workshop/data/sampledata_routing.sql: No such file or directory
在我的桌面上,我确实有一个文件夹pgrouting-workshop,它包含文件夹data和sql转储文件。
那我为什么要犯这个错误呢?
我不确定它是否是权限问题,还是我做错了什么,任何帮助都会受到极大的感谢。我有一个专门的Ubuntu服务器,其上安装了Postgres。我想备份数据库,但是当我使用pg_dump时,我的权限被拒绝了。有人能帮我吗?这里有一些关于我的设置的细节。
关于postgres:我有以下数据库。
postgres,
template0,
template1,
mydb,
mydb1
我有两个PostgreSQL用户
postgres,
mydb (There are no postgresql groups defined yet)
postgres的所有其他设置都是默认值。
在我的ubuntu本
我已经创建了Postgres用户user1,并将所有权限授予了my_db,当我试图从数据库中选择一个表时,我得到了一个权限被拒绝的错误。
创建user1
>>zya$ psql -d postgres
psql (9.6.3)
Type "help" for help.
postgres=# CREATE USER user1 WITH PASSWORD 'password1';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE my_db to user1;
GRANT
postgre
当运行下面的命令时,我得到一个语法错误。
yyyyyydb=# psql yyyyyydb< /tmp/yyyyyydb_bkp_11202017.sql;
ERROR: syntax error at or near "psql"
LINE 1: psql waivrdb < /tmp/yyyyyydb_bkp_11202017.sql;
每次我尝试在我的mac 10.8上运行psql时,我都会收到错误信息:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
根据关于这个问题的说法,这是一个路径问题。
我尝试通过打开.profile并添加行:export PATH=/usr/local/bin:$PATH
据我所知,在SQL Server中,拒绝阻止权限并胜过任何现有的授权。我只是在想,是否有一种方法可以拒绝"with grant option",即防止任何"with grant option“显式地提供给主体,而不是像中描述的那样在GRANT语法中省略它。类似于伪代码中的"GRANT permission DENY GRANT OPTION“。
我之所以寻找这样的功能,是因为我不希望一个主体稍后被其他具有相同GRANT选项的主体授予GRANT选项。我从安全的角度来看待这个问题。
有没有办法做到这一点?
我试图在用Perl编写的Linux上创建一个PostgreSQL触发器,它应该基于外部库执行代码。包含触发器的SQL脚本如下所示:
CREATE OR REPLACE FUNCTION notify_mytable_update() RETURNS trigger AS $$
use lib "full_path_to_lib_dir";
use MyModule;
return;
$$ LANGUAGE plperlu
SECURITY DEFINER
SET search_path = myschema, public, pg_temp;
DROP TRIG
我试图在一个或多个与psql兼容的主机上并行运行SQL,并使用xargs在每个主机上依次运行SQL。
bash脚本,我是从另一个脚本中获得的:
# Define the count of hosts (also the number of parallel processes)
export pe_fpe_hosts_line_count=$(cat $pe_fpe_hosts_file_loc | wc -l)
# Define the function that runs SQL from a file
function func_pe_exec_sql {
while read pe_
我试图创建bash和sql文件来创建用户和数据库。
以下是我迄今为止所做的..。
Setup_postgres.sql
Create USER dummbyuser;
ALTER USER dummbyuser with superuser;
ALTER USER dummbyuser with LOGIN;
/q
Setup_postgres.sh
sudo su - postgress
psql -f setup_postgres.sql;
sh setup_postgres.sql
logout
我的问题解决了
我告诉bash运行Setup_postgres.sh,但是它挂在
s