leaning diary Rails

【Learning Daily14】failed: FATAL: role "postgres" does not exist / sudo: systemctl: command not found

19/10/2023

【Learning Daily14】failed: FATAL: role "postgres" does not exist / sudo: systemctl: command not found

データベースの存在を確認するコマンド

> psql -U <ユーザー名> -l

List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------------------+----------+----------+---------+-------+-----------------------
postgres | xxxxxxxx | UTF8 | C | C |
xxxxxxxx_test | xxxxxxxx| UTF8 | C | C |
.........

 

オプションのマニュアルはこちら

 

> psql --help
psql is the PostgreSQL interactive terminal.

Usage:
psql [OPTION]... [DBNAME [USERNAME]]

-U, --username=USERNAME database user name (default: "xxxxxxxx")

 

connection to server at "localhost" (127.0.0.1), port xxxxxxxx failed: FATAL: role "postgres" does not exist

ローカルホストがすでに使用されていて、接続できない場合に表示されるエラーです。

 

以下のコマンドでローカルで動いているpostgresを確認し、

 

ps aux | grep postgres

 

存在していたら次のコマンドでプロセスを止めます。

 

brew services stop postgresql

 

1つ目のpsコマンドのオプションについては以下のとおり。

 


# NAME
     ps – process status
     -a      Display information about other users' processes as well as your own.  This will skip any processes which do not have a
             controlling terminal, unless the -x option is also specified.
     -u      Display the processes belonging to the specified usernames.
     -x      When displaying processes matched by other options, include processes which do not have a controlling terminal.  This is
             the opposite of the -X option.  If both -X and -x are specified in the same command, then ps will use the one which was
             specified last.

 

macOSでは Systemd をデフォルトではサポートしていないため、systemctl コマンドはmacOSでは使用できません。

そのため、入力すると sudo: systemctl: command not found といったエラーがおきます。

macOSでは、brew services コマンドを使用してHomebrewで管理されたサービス(PostgreSQLなど)を制御します。

停止以外のコマンドについても合わせて書き留めておきます。

 

# PostgreSQLを起動する場合:
brew services start postgresql

# PostgreSQLを再起動する場合:
brew services restart postgresql

 

 

-leaning diary, Rails