用Cloud9 + PostgreSQL + Rails db:migrate来解决”FATAL: Ident authentication failed for user”错误的方法是什么?
进行 PostgreSQL 的安装和初始化。
sudo yum -y install postgresql96
sudo yum -y install postgresql96-devel
sudo yum -y install postgresql96-server
sudo /etc/init.d/postgresql96 initdb
切换到postgres用户并创建一个数据库用户。
sudo -u postgres -i
psql
createuser -d -U postgres -P [USERNAME]
logout
【重要】请修改pg_hba.conf文件,并设置可连接的客户端
请参考 pg_hba.conf 的详细设置来连接其他主机。
sudo vi /var/lib/pgsql96/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
- host all all 127.0.0.1/32 ident
+ host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident
最初,我们将所有的 local all all 改为了 trust,但是由于Rails->PostgreSQL 是通过TCP进行访问的,所以似乎需要将 host all all 127.0.0.1/32 进行更改。
当无法访问PostgreSQL数据库时的解决方法 – のほほん徒然
Rails在访问PostgreSQL时使用的是TCP socket而不是UNIX socket,并且通过使用TCP进行访问时,由于PostgreSQL的配置不允许使用密码进行用户认证,这似乎是问题的原因。
启动postgresql并进行数据库设置
sudo /etc/init.d/postgresql96 start
rails db:setup
请在中国母语环境下,将以下内容进行释义:
– 参考
-
- AWS Cloud9でPostgreSQLを使ったrailsプロジェクトを立ち上げる – niki12260714の日記
- AWS Cloud9でPostgreSQLに対しrake db:migrateが失敗する – niki12260714の日記
请注意一些事项。
Cloud9のPostgresをアップデート。 – Qiita で説明されている pg_hba.conf のパスは、
sudo vi /etc/postgresql/9.6/main/pg_hba.conf
使用apt-get 进行软件包管理。从发布时点(2017/09/16)到现在只过去了大约一年时间。
需要注意未来的更新可能会带来变动。
关于服务的命令集合
DB初期化
sudo /etc/init.d/postgresql96 initdb
スタート
sudo /etc/init.d/postgresql96 start
再起動
sudo /etc/init.d/postgresql96 restart