LoginSignup
3
4

More than 3 years have passed since last update.

【Rails】Vagrant環境でPostgreSQLを使用する方法

Posted at

開発環境

・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・PostgreSQL: 9.2.24
・OS: 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

5.PostgreSQLを起動

ターミナル
$ sudo service postgresql start

6.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 | {}

7.データベースを確認

手順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の違い

8.Railsアプリを作成

デフォルトのデータベースがSQLiteなので、-dオプションでPostgreSQLを指定する。

ターミナル
$ rails new sample -d postgresql

9.database.ymlを編集

templateは、まっさらなデータベースを作成することが出来るtemplate0を指定する。

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

10.データベースを作成

ターミナル
$ rails db:create

FATAL: Ident authentication failed for userというエラーが出る場合

① PostgreSQLの設定ファイルを開く。

ターミナル
$ sudo vi /var/lib/pgsql/data/pg_hba.conf

② 最下部にある認証方式を編集する。

METHODをmd5に変更してください。

pg_hba.conf
.
.
.
# 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 : DBの所有者が、シェルを実行しているOSのユーザ名と一致するかで認証する、
md5 : パスワードで認証する。
trust : 認証なし。

よく使うコマンド

【ログイン前】

sudo service postgresql start : 起動
sudo service postgresql stop : 停止
sudo service postgresql restart : 再起動
sudo -u postgres psql : ログイン

【ログイン後】

\q : ログアウト
\? : ヘルプ表示
\l : データベース一覧表示
\du : ユーザー一覧表示
\c データベース名 : データベースへ接続
\z : テーブル一覧表示

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4