postgresql - 无法在 Rails 数据库上验证 Postgresql 和/或编辑 VIM 文件

标签 postgresql

对 Ruby on Rails 还很陌生,我正在尝试从 SQLITE3 数据库迁移到 Postgresql。

我已经安装了 gem 等并更改了 database.yml 文件以包含新的 Postgresql 详细信息。我也已经启动了服务并登录到控制台创建用户等。

但是,当使用与 database.yml 中相同的详细信息和/或直接在控制台中为用户创建的详细信息时;我收到以下错误:

psql:致命:用户“xxxx”的对等身份验证失败

我花了很多时间尝试使用 VIM 编辑 pg_hba.conf 文件,这让我崩溃了!我显然已经创建了很多我不知道如何删除的交换文件,并且花了很多时间只是试图编辑文件以(我认为)更改身份验证类型。

我在设置过程中做错了什么导致这些错误,我该如何纠正?

一定有什么根本性的错误,因为我确信你不需要在每次创建数据库时都编辑这个愚蠢的文件,SQLITE 似乎没有问题!

非常感谢任何帮助

最佳答案

在某些时候,您确实需要留出一点时间,您知道,在尝试使用新系统之前了解它。此外,我觉得您实际上并不熟悉一般的计算机(或它们的术语)。

所以 - 这不是一个“vim 文件” - 它只是一个文本文件。 Vim 是一个文本编辑器,但如果您喜欢或不知道如何操作,您可以使用不同的编辑器。

该文件 (pg_hba.conf) 特别控制默认 authentication methods PostgreSQL 服务器将在您尝试连接时使用。所有这些都包含在广泛的官方在线文档中,并且可能在您正在学习的任何教程中。

因为您可以远程连接到 PostgreSQL 数据库,并且作为多个不同的用户,它需要在您连接时对您进行身份验证。 pg_hba.conf 文件是一组“首次检查”,无需实际启动新的数据库后端和查询用户表等即可完成。

您的错误消息表明您无法使用“对等”身份验证进行连接。您的教程可能建议将其更改为“md5”或其他一些密码设置。

pg_hba.conf 文件不是计算机上的所有用户都可以编辑的(从安全的角度来看,这将使其毫无意义)。所以 - 您需要成为“postgres”用户(这可能是 PostgreSQL 运行的用户,并且是拥有该文件的用户)或可以编辑任何内容的“root”。

“sudo”命令允许您以除您自己以外的用户身份运行其他命令(如果已正确设置)。因此,“sudo vim”正在以“root”身份打开 vim 编辑器,这样您就可以编辑文件了。

如果您设法编辑该文件,您将需要重新启动 PostgreSQL 服务以使其重新加载设置。

至于为什么你创建了很多交换文件,我想那是因为你要么卡在了 vim 中并在没有正确退出的情况下杀死了它,要么因为你让它的几个副本还在运行。它们只是文件,可以像任何其他文件一样删除(如果您有适当的权限)。

我感觉您正试图超越您当前的理解几步。这可能会让您很快学到很多东西,但也会导致您浪费很多时间,因为您不知道自己犯了什么错误,也不知道如何改正它们。

如果您没有迫切需要学习如何管理 PostgreSQL 服务器,那么我建议您暂时坚持使用 SQLite。尽管 PostgreSQL 提供了一些出色的特性并且是一个非常强大的系统,但它不可避免地是一个比单个库驱动文件更复杂的系统。

如果您确实想继续前进,请先留出几个小时来确保您了解如何操作和管理您的计算机的基础知识 - 设置用户、组、管理文件和目录的所有权、更改权限他们,开始停止和监视服务,知道您的日志文件在哪里以及每个文件的内容。那么至少您将只学习 PostgreSQL,而不是一打其他项目。

关于postgresql - 无法在 Rails 数据库上验证 Postgresql 和/或编辑 VIM 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52679977/

相关文章:

sql - 如何跳过sql中的case语句?

ruby-on-rails - Rails 应用程序中的 Postgres LIKE

postgresql - 优化/索引时区查询

javascript - 使用 res.send 表达 app.param 问题

sql - 对有限行进行求和和分组

node.js - 如何在 TypeScript 项目中配置 Knex.ts?

PHP : Execute sql queries in background

sql - 使用 St_ExteriorRing 或类似的方法在 Multipolygon geojson 中填充 'holes'

sql - PostgreSQL 9.1 : How to concatenate rows in array without duplicates, JOIN 另一个表

php - "use"命令因 PostgreSQL 中的语法错误而失败(从 MySQL 转换)