小编dez*_*zso的帖子

如何将 Postgresql 更改为侦听端口 5432?

我已经在我的机器上将 Postgresql 从 9.3 升级到 9.6(linux mint rafaella-so ubuntu 14.04)

由于以前的版本在 5432 上侦听,新版本在 5433 上侦听,但我想将其更改为 5432,以便之前的配置(rails、phppgadmin 等)与新的 postgres 服务器一起使用。

我已将 postgresql.conf 中的端口从 5433 更改为 5432 并重新启动了 postgres,但这不起作用:

$ sudo netstat -nltp |grep 5432     
$ sudo netstat -nltp | grep 5433
tcp        0      0 127.0.0.1:5433          0.0.0.0:*               LISTEN      25467/postgres 
Run Code Online (Sandbox Code Playgroud)

我还尝试设置环境变量并重新启动 postgres:

PGPORT=5432; export PGPORT
Run Code Online (Sandbox Code Playgroud)

再次,仍然在 5433 上收听,而在 5432 上什么也没有。

尝试连接给了我:

$ sudo -u postgres psql postgres 
psql: could not connect to server: No such file or directory
    Is the server running locally …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.3 postgresql-9.6

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

Oracle SQL 创建视图权限

这更像是一个理论问题,但我需要尽快帮助。这里是:

通过适当使用 SQL 查询,将系统管理员所需的访问权限授予名为 STD01 的数据库用户,以便他可以创建名为 CUSTOMER 的表的视图,该表属于另一个数据库用户 STD00。

谁能帮我这个?

我知道我必须授予他 CREATE (ANY) VIEW 的系统权限,并授予他 CUSTOMER 表上的所有对象权限(SELECT、INSERT、UPDATE 和 DELETE),但我不知道我该怎么做通过使用 SQL...

oracle permissions view

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

SQL Server 2008 R2 SP1 - Tempdb“可用空间”显示负值

请帮忙,因为这个问题让我发疯......

Tempdb有四个数据文件和一个日志文件。它们都位于同一个专用驱动器上。

当我tempdb在 SQL Server Management Studio (SSMS) 中右键单击以查看属性 --> 常规...我看到“大小”为 ~65000 MB,“可用空间”为 ~64000 MB。但是,当我尝试通过 GUI 缩小文件时,我看到“当前分配的空间”没有改变并且仍然显示初始大小。

这也是“可用空间”显示为负数的地方。到目前为止,我找到的唯一解决方法是重新启动 SQL Server 以刷新tempdb,但我不能继续这样做。

有没有人遇到过这个问题,并知道它的根本原因/永久解决方案吗?

sql-server-2008 sql-server tempdb

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

增加小数精度突然增加了表的大小

我有一张像:

CREATE TABLE grid_rows(
    [grid_row_id] [int] NOT NULL,
    [grid_column_id] [smallint] NOT NULL,
    [decimal_val] [decimal](18, 6) NULL,
    [datetime_val] [datetime] NULL,
    [integer_val] [int] NULL,
    [string_val] [varchar](1024) NULL
)
Run Code Online (Sandbox Code Playgroud)

这张桌子有一些 1,037,560 rows

exec sp_spaceused "grid_rows" gives:
rows         reserved    data
1,037,560    461,768KB  302,648KB`
Run Code Online (Sandbox Code Playgroud)

将精度从 (18, 6) 更改为 (24,6) 后即 ALTER TABLE grid_rows ALTER COLUMN decimal_val decimal(24, 6)

exec sp_spaceused "grid_rows" gives:
rows         reserved     data
1,037,560    641,352KB  560,832KB
Run Code Online (Sandbox Code Playgroud)

根据所分配的空间decimal(18,6)就是9 bytes那的(24, 6)13 bytesMSDN参考

The reserved space has …

sql-server-2008 sql-server

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

Postgresql:29/E4624520 处的记录长度无效,但复制看起来不错

这是什么错误?我看到复制工作正常,但我不确定数据是否已损坏。

我可以安全地忽略此错误吗?

postgresql replication write-ahead-logging

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

如何让 psql 提示超级用户 postgres 输入密码?

我在 Windows 7 上使用 PostgreSQL 9.6.2,当我从命令提示符启动 psql 时:

psql -U myusername 
Run Code Online (Sandbox Code Playgroud)

它要求输入密码并登录。但是如果我这样做:

psql -U postgres
Run Code Online (Sandbox Code Playgroud)

它会以超级用户权限直接登录到主数据库,而无需输入任何类型的密码。如果我输入:

psql -U postgres -W 
Run Code Online (Sandbox Code Playgroud)

然后它会询问 su 密码,顺便说一下,这是我在一键安装过程中设置的密码。

我已经检查过了pg_hba.conf,它被设置md5为所有用户,所有数据库。我什postgres=# ALTER USER postgres PASSWORD 'myPassword';至用: 更改了数据库中的密码,但无济于事。

问题是为什么当我以普通用户身份登录时它要求输入密码而当我以超级用户身份登录时却没有?这不是主要问题,因为在任何一种情况下我都可以访问我的数据库,但它似乎根本不安全。任何解决方法将不胜感激。

postgresql authentication windows postgresql-9.6

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

如何在 RDS PostgreSQL 上授予设置复制属性?

在 AWS RDS 文档中,我看到rds_superuser可以:

授予和撤销所有不是 rds_superuser 角色的角色的复制属性。有关更多信息,请参阅 PostgreSQL 文档中的此部分。

来源:http : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html

但是,如果我尝试,在以我的身份登录时rds_superuser

ALTER ROLE ROLENAME WITH REPLICATION;
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出由于不是超级用户,我无法执行该操作。

你们知道如何为用户设置复制属性吗?

postgresql amazon-rds

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

postgres 创建可以选择表和这些表的列的有限用户

我有一个应用程序,可以自动创建 PostgreSQL 数据库,还可以自动创建数据库用户。出于安全目的,该数据库用户被授予有限的访问权限,因为它将被移交给客户端使用。 我使用的版本是Postgres 9.6

CREATE USER %USERSETUP% WITH
    LOGIN PASSWORD '%USERSETUPPASS%'
    NOSUPERUSER
    NOCREATEDB
    NOCREATEROLE
    INHERIT
    NOREPLICATION
    CONNECTION LIMIT -1;

ALTER DEFAULT PRIVILEGES IN SCHEMA %SCHEMA% GRANT INSERT, SELECT, UPDATE, DELETE, REFERENCES ON TABLES TO %USERSETUP%;
Run Code Online (Sandbox Code Playgroud)

现在,我的测试还进入创建的数据库,并验证它是否已正确创建,使用查询脚本获取表名称,然后获取每个表内的列名称(作为奖励,还获取列数据类型

由于这些权限,用户无法使用 information_schema。 另外,我只请求带有 SYSTEM CATALOG 的查询脚本

我的表名脚本有效:

SELECT tablename FROM pg_catalog.pg_tables where schemaname = '{schema}'
Run Code Online (Sandbox Code Playgroud)

这将表名称作为列表返回:

业务、位置、人员、客户等...

但是,当我运行以下两个脚本来获取列名称时,我得到的返回值为 0,就好像该用户正在尝试查询 information_schema 一样。我猜这是因为特权:

SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ 'schemaaryzdhyqoi'
  AND …
Run Code Online (Sandbox Code Playgroud)

postgresql permissions scripting users postgresql-9.6

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

在普通 SQL 中访问触发器函数中的旧/新表值

我正在尝试构建一个触发器函数,以便在任何项目发生更改时自动更新父订单值。

这是我创建的:

CREATE OR REPLACE FUNCTION update_totals() RETURNS void AS $$
    UPDATE orders SET
       total_fees = (SELECT SUM(fees) FROM order_items WHERE order_id = OLD.order_id),
       total_profit = (CASE WHEN total_cost IS NOT NULL THEN total - total_tax - total_cost - (SELECT SUM(fees) FROM order_items WHERE order_id = OLD.order_id) ELSE NULL END)
    WHERE id = OLD.order_id;
$$
LANGUAGE SQL;

CREATE TRIGGER update_totals AFTER INSERT 
OR UPDATE OF fees
ON order_items INITIALLY DEFERRED
FOR EACH ROW
WHEN ( OLD.* IS DISTINCT FROM NEW.* …
Run Code Online (Sandbox Code Playgroud)

postgresql functions postgresql-9.6

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

如何在 AWS RDS 上维护索引和统计信息?

在我们的 AWS RDS 实例上设置 SQL Server 索引和统计维护代码的过程中,我设法设置了脚本并且可以从 SSMS 运行它。

考虑到RDS的限制,请教如何设置SQL Server Agent?

sql-server ola-hallengren amazon-rds

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