結局、PostgreSQLにログインユーザと同名のロールを追加しました。
経緯としては、PostgreSQLを使っているRailsアプリケーションが動かしたかったです。
ledsun@MSI:~/pubannotation►bin/rails db:create could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? Couldn't create 'pubannotation' database. Please check your configuration. rails aborted! PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? bin/rails:4:in `<main>' Tasks: TOP => db:create (See full trace by running task with --trace)
こんな感じで、そもそもPostgreSQLをインストールしていないことに気がつきました。 How To Install PostgreSQL on Ubuntu 20.04 [Quickstart] | DigitalOcean を参考にし
sudo apt update && sudo apt upgrade sudo apt install postgresql postgresql-contrib
それからPostgreSQLを起動します。
ledsun@MSI:~/pubannotation►sudo -i -u postgres postgres@MSI:~$ /etc/init.d/postgresql start * Starting PostgreSQL 12 database server
それでもう一度DBを作ろうとすると
ledsun@MSI:~/pubannotation[1]►bin/rails db:create FATAL: Peer authentication failed for user "postgres" Couldn't create 'pubannotation' database. Please check your configuration. rails aborted! PG::ConnectionBad: FATAL: Peer authentication failed for user "postgres" bin/rails:4:in `<main>' Tasks: TOP => db:create (See full trace by running task with --trace)
RailsでPostgresを使おうとしてはまった|TechRacho by BPS株式会社
結論としてはPeer認証が有効になっていたのが原因でした。 Peer認証が有効になっている場合は、ユーザ名とUnixユーザ名が一致している必要があります。
database.yml
にユーザー指定がなかったので、ログインユーザと同じロールを作ることにしました。
ledsun@MSI:~/pubannotation[1]►sudo -i -u postgres postgres@MSI:~$ createuser -s ledsun
/etc/postgresql/12/main/pg_hba.conf
を編集します。
postgres@MSI:~$ vi /etc/postgresql/12/main/pg_hba.conf
次のようにすべてのローカルユーザーをPeer認証にします。
# Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer
再起動します。
postgres@MSI:~$ /etc/init.d/postgresql restart * Restarting PostgreSQL 12 database server
DBの作成に成功しました。
ledsun@MSI:~/pubannotation[1]►bin/rails db:create Database 'pubannotation' already exists Created database 'pubannotation_test'
参考
- UbuntuでPostgreSQLの操作メモ - Qiita
- https://www.postgresql.jp/docs/9.2/auth-pg-hba-conf.html
- Rails new するだけで、なぜかローカルのPostgreSQL環境につながってしまう話 - Qiita
- Creating a Postgres User with Permissions for a Rails Application | Tom Kadwill
- How To Use PostgreSQL with Your Ruby on Rails Application on Ubuntu 18.04 | DigitalOcean