标签: postgresql

授予用户创建/删除特定名称数据库的权限

我有一个名为 mydb_user 的 PostgreSQL 用户,他已被授予 mydb_dev 的所有权。mydb_user 已经拥有删除数据库的权限,但是我希望他在删除数据库后能够再次创建数据库。如果可能,我希望他只能再次创建一个具有相同名称 (mydb_dev) 的数据库,但如果有必要,我会满足于让他创建一个任何名称的数据库。

postgresql

7
推荐指数
1
解决办法
3577
查看次数

社区 MySQL 是否可以安全用于生产?

或者我需要获得企业版吗?

这是因为我在 MySQL 的网站上找到了这个:

如果您正在运行 MySQL 生产级系统,我们希望将您的注意力引向 MySQL 企业版的产品说明:

http://mysql.com/products/enterprise/

当我查看功能时,社区版似乎不支持交易,而企业版则支持。

如果社区版确实不适合生产,那么似乎 posgresql 可能是我的出路,因为它支持事务并且完全开源。

如果我必须更改,sql 语法是否需要更改(很多)?

mysql postgresql database

7
推荐指数
2
解决办法
2万
查看次数

如何启动 PhpPgAdmin?

我刚刚使用 Ubuntu 的突触应用程序安装了 postgresql、php5,特别是 PhpPgAdmin。PHP 运行良好,http 服务器 (lighttpd) 运行良好,我可以在命令行中执行 pg。唯一仍然是个谜的是 PhpPgAdmin - 如何启动它以使用它?我对启动 PhpPgAdmin 的正确方法一无所知;网站上的任何地方都没有对此进行解释。我尝试在 bash 命令提示符下键入 phppgadmin,然后在浏览器的地址栏中输入“ http://phppgsdmin/ ”和“ http://localhost/phppgadmin ”作为胡乱猜测 - 没有任何反应。秘密是什么?

顺便说一句,我只在本地主机上提供 http 服务,做纯粹的私有网络开发。

postgresql

7
推荐指数
1
解决办法
1万
查看次数

使用数据库后端和 DLZ 支持配置 BIND

决定将我基于 Windows 的 DNS 服务器移至 linux。问题是我需要能够动态更新区域文件而不必重新启动绑定。似乎最流行的解决方案是为数据库服务器( postgresql、sqlite、mysql)安装绑定驱动程序,然后更新区域文件。看起来很简单,但我无法让它为我的生活工作。

我目前正在使用 Amazon Linux 发行版,但我也尝试了 RHEL 6.2 中的所有内容,但都没有成功。

我尝试了几种不同的方法。第一个是使用源代码更改来编译绑定以支持 mysql 支持http://pbraun.nethence.com/doc/net/bind-mysql.html。这与更改一起编译得很好,我没有收到任何错误,但是在运行make install所有二进制文件后被复制到 /usr/local/sbin 但我似乎无法启动我运行的守护进程service named start,它只是告诉我没有名为(没有双关语意)。其次,没有生成任何配置文件。所以我创建了一个名为.conf 的文件并将其放入 /etc/named.conf 然后运行/usr/local/sbin/named-checkconf它告诉我它找不到文件 /etc/named.conf 所以我不知道。

接下来我尝试安装包 bind-sdb 并使用 postgresql。安装的软件包 yum -qy bind bind-sdb bind-utils postgresql postgresql-server 按照http://bind-dlz.sourceforge.net/postgresql_example.html上的步骤我创建了一个新的 postgre 数据库和表等。下面是我当前的 named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost …
Run Code Online (Sandbox Code Playgroud)

postgresql domain-name-system bind amazon-ec2 amazon-web-services

7
推荐指数
2
解决办法
3万
查看次数

在 NGINX 中使用 Postgres Basic Auth 将查询结果添加到 Proxy HTTP Header

我们正在尝试使用 ngx_postgres 模块通过 NGINX 进行基本身份验证。我们想从查询结果对中检索一个值并将其添加到 HTTP 标头中,然后将其代理到另一台服务器。

我们已成功通过 postgres 进行身份验证,但问题是将结果对传递给代理。我们目前使用的代码如下:

    location = /test_auth {
            internal;

            postgres_escape $user $remote_user;
            postgres_escape $pass $remote_passwd;

            postgres_pass geo_database;

            postgres_query "select user_name,contract_id,access_token from schema_name.table_name where user_name=$user and password=md5($pass);";
            postgres_rewrite no_rows 401;
            more_set_headers -s 401 'WWW-Authenticate: Basic realm="Restricted"';
            postgres_output none;
            postgres_set $query_val 0 0 required;
    }

    location /test/ {
           auth_request /test_auth;

           proxy_pass      http://back_end_server/public-dev/;
           proxy_set_header test $query_val;
           proxy_redirect http://back_end_server/public-dev/ http://example_domain.com/;

    }
Run Code Online (Sandbox Code Playgroud)

这是我们尝试过的许多不同事物的一个子集。此示例中的问题是 query_val 似乎在子请求中被销毁。当 postgres 调用不在子请求中时,我们能够成功检索查询结果对,但这会禁用我们的身份验证。

我们还在主位置尝试了一个简单的查询,然后将此数据代理到另一个位置,但它失败了。如果我们将查询结果对指向本地资源(如 index.html 文件),则查询结果对将被正确添加到头文件中,但是一旦我们尝试将其添加到 http 标头并将其发送到代理,它就不会不再存在。

对此问题的任何建议将不胜感激。

[更新]我花了一整天的时间阅读我正在使用的模块,我真的认为这是模块的相序问题。我有一种感觉,代理重写是在 postgres 身份验证子请求实际返回结果之前发生的。我会继续调查。任何帮助仍然受到赞赏。

postgresql nginx proxy

7
推荐指数
1
解决办法
3415
查看次数

Windows 上的 PostgreSQL Stack Builder 安装代理设置

我已经在运行 Windows 8.1(64 位)的开发人员机器上下载并安装了 PostgreSQL 9.3(64 位)。此开发人员机器需要使用代理服务器来访问 LAN 外部的主机。

StackBuilder 3.1.1 向导/安装程序从 IE 中提取代理设置,它们看起来是正确的,但是当单击“下一步”按钮时,我收到一个“堆栈生成器错误”对话框,指示:

无法打开应用程序列表:
http://www.postgresql.org/applications-v2.xml

错误:无法打开指定的 URL。

我已经能够使用 IE 和 Chrome 使用安装程序最初从 IE 中提取的相同代理设置成功下载应用程序列表。

我尝试过的其他事情:

  • 在代理服务器主机名之前添加协议“http://”
  • 使用代理服务器的 IP 地址而不是主机名
  • 完全删除了代理设置

在前两种情况下,安装程序几乎立即响应上述错误消息。最后,在响应上述错误消息之前大约有 5 秒的延迟。

一个类似的问题似乎被记录为PostgreSQL 错误跟踪器上的一个错误,但没有对初始报告作出回应。

有没有人熟悉这个问题,如果是这样,在使用 Stack Builder 安装程序时发现哪些变通办法是有效的?

postgresql windows installation proxy

7
推荐指数
1
解决办法
3万
查看次数

pg_dump: [archiver (db)] 与数据库的连接失败:致命:用户“postgres”的对等身份验证失败

我正在尝试将我的 Postgres 数据库备份到另一台服务器,但我一直被拒绝访问。

我的 pg_hba.conf 文件如下所示:

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain …
Run Code Online (Sandbox Code Playgroud)

postgresql psql database-backup

7
推荐指数
1
解决办法
3万
查看次数

Docker:使用 ADD 添加的文件夹的权限被拒绝

我正在尝试使用 docker 配置 postgresql 安装。

FROM ubuntu:13.10

ADD . /db

# install postgres
# ...

RUN chown postgres:postgres /db -R && \
    chmod 700 /db -R

USER postgres
RUN /etc/init.d/postgresql start &&\
    createdb test &&\
    psql -d test -f /db/all.sql
Run Code Online (Sandbox Code Playgroud)

我可以访问文件夹/db,但不能访问/db/plpgsql(其中包含由/db/all.sql 执行的文件)

我在 /db/plpgsql 上尝试了 chmod 777 但它也不起作用,权限被拒绝。

postgres@c364bdd94652:/$ ls -l | grep db
drwxrwxrwx   5 postgres postgres 4096 Jul 10 17:39 db
postgres@c364bdd94652:/$ cd db/
postgres@c364bdd94652:/db$ ls -l
-rwxrwxrwx  1 postgres postgres   2567 Jul 10 16:34 Dockerfile
-rwxrwxrwx  1 …
Run Code Online (Sandbox Code Playgroud)

postgresql linux permissions docker

7
推荐指数
1
解决办法
3195
查看次数

postgis 2.1.6 -> 2.2.0 升级后无法升级 postgresql 9.4 -> 9.5beta2

这是我的情况:

  1. 我从 Postgresql 9.4.5 和 Postgis 2.1.6 开始。一切顺利。两者都是从源代码安装的。
  2. 我将 Postgis 升级到 2.2.0(下载源、配置、制作、制作安装,然后ALTER EXTENSION postgis UPGRADE TO '2.2.0';)。这似乎有效(在安装了 postgis 的两个数据库上都select postgis_full_version()显示POSTGIS="2.2.0 r14208" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.9.3" LIBJSON="0.11" RASTER了),尽管旧的postgis-2.1.so留在了 lib 目录中。
  3. 我尝试将 Postgresql 从 9.4.5 升级到 9.5beta2。我下载源代码、配置、制作、安装、安装 Postgis 2.2.0、initdb,并准备运行pg_upgrade. pg_upgrade失败:

您的安装引用了新安装中缺少的可加载库。您可以将这些库添加到新安装中,或者从旧安装中删除使用它们的功能。问题库列表在文件中:loadable_libraries.txt

loadable_libraries.txt 包含:

无法加载库“$libdir/rtpostgis-2.1”错误:无法访问文件“$libdir/rtpostgis-2.1”:没有这样的文件或目录

无法加载库“$libdir/postgis-2.1”错误:无法访问文件“$libdir/postgis-2.1”:没有这样的文件或目录

我不知道为什么新版本的 Postgresql 需要旧版本的 Postgis ......它不应该被删除吗?我从 9.4 的 lib 目录中移动了旧文件postgis-2.1.so和rtpostgis-2.1.so文件,但错误仍然存​​在。

我还尝试针对 Postgresql 9.5beta2 …

postgresql postgis

7
推荐指数
1
解决办法
1857
查看次数

在 Centos 上为 Postgres 配置防火墙规则的问题

我试图按照本指南允许远程连接到 postgres http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html
目前我遇到了防火墙问题。
我有它的设置,所以我有一个/tmp/v4我可以修改并从中恢复我的防火墙规则。
我尝试了 2 种设置。
指南推荐的一种:

-A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 00.000.000.00  --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -s 00.000.000.00 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

当我使用这个设置和运行nc ipofserver 5432,我得到Ncat: connection timed out
如果我尝试设置

-I INPUT -p tcp -s 00.000.000.00  --dport 5432 -j ACCEPT
-I INPUT -p tcp -s 00.000.000.00  --dport 5432 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我运行相同的 ncat 命令,我得到 …

postgresql firewall centos centos7

7
推荐指数
1
解决办法
2万
查看次数