【Rails】在Vagrant环境中使用PostgreSQL的方法

开发环境

・Ruby版本:2.5.7
・Rails版本:5.2.4
・Vagrant版本:2.2.7
・VirtualBox版本:6.1
・PostgreSQL版本:9.2.24
・操作系统:macOS Catalina

实施

1. 登录到vagrant ssh

$ vagrant ssh

2. 将yum更新至最新版本。

$ sudo yum -y update

3. 安装PostgreSQL。

$ sudo yum -y install postgresql
$ sudo yum -y install postgresql-devel
$ sudo yum -y install postgresql-server

运行`psql –version`,如果显示了版本号,则表示安装完成。

$ psql --version
psql (PostgreSQL) 9.2.24

4. 进行 PostgreSQL 初始化

$ sudo postgresql-setup initdb

启动PostgreSQL

$ sudo service postgresql start

创建并登录到PostgreSQL帐户

$ sudo -u postgres psql
postgres=# create role [任意のユーザー名] with createdb login password '[任意のパスワード]';

如果在运行du时添加了Role,则账户创建完成。

postgres=# \du
                                    List of roles
  Role name      |                   Attributes                   | Member of 
-------------+------------------------------------------------+-----------
 [任意のユーザー名] | Create DB                                      | {}
 postgres        | Superuser, Create role, Create DB, Replication | {}

检查数据库

查看使用“手順4”的“sudo postgresql-setup initdb”命令创建的数据库。

postgres=# \l
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges   
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | SQL_ASCII | C       | C     | 
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
(3 rows)

请参考下面的文章以了解 template0 和 template1 之间的区别。

PostgreSQL的template0和template1的差异是什么?

创建一个Rails应用

由于默认数据库是SQLite,因此可以通过使用-d选项指定PostgreSQL。

$ rails new sample -d postgresql

9. 编辑数据库配置文件 database.yml

模板可以指定使用 template0 来创建一个全新的数据库。

default: &default
  adapter: postgresql
  encoding: unicode
  template: template0
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: 手順6で設定したユーザー名
  password: 手順6で設定したパスワード

创建一个数据库

$ rails db:create

如果出现”身份验证失败的严重错误”,则提示”FATAL: Ident authentication failed for user”。

打开PostgreSQL的配置文件。

$ sudo vi /var/lib/pgsql/data/pg_hba.conf

编辑位于底部的身份验证方式。

请将 METHOD 更改为 md5。

.
.
.
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

【常用的认证方式】

ident : 用于验证的数据库所有者必须与执行Shell的操作系统用户名称匹配。
md5 : 通过密码来验证。
trust : 无需验证。

经常使用的命令

【未登录】

sudo service postgresql start : 启动 PostgreSQL
sudo service postgresql stop : 停止 PostgreSQL
sudo service postgresql restart : 重新启动 PostgreSQL
sudo -u postgres psql : 登录 PostgreSQL

【登录后】

\q : 退出登陆
\? : 显示帮助信息
\l : 显示数据库列表
\du : 显示用户列表
\c 数据库名 : 连接到数据库
\z : 显示表格列表

广告
将在 10 秒后关闭
bannerAds