こんにちは、皆さん!Windows 11でPostgresを使ってみたものの、createuserコマンドが使えないという絶望的な状況に直面したことはありませんか?今日はその解決策をお伝えします。
1. ジレンマ:Postgresのcreateuserコマンドが使えない!
Windows 11にPostgresをインストールし、いざcreateuserコマンドを叩いてみたものの...エラーが出てしまった!以下に私の経験した具体的なエラーを共有します。
PS C:\Users\windowsのユーザー名> createuser --interactive test
新しいロールをスーパーユーザーにしますか? (y/n)n
新しいロールに対してデータベースを作成する権限を与えますか? (y/n)n
新しいロールに対して別のロールを作成する権限を与えますか? (y/n)n
パスワード:
パスワード:
createuser: エラー: "localhost"(::1)、
ポート5432のサーバーへの接続に失敗しました:
FATAL: password authentication failed for user "のユーザー名"
2. 原因:PostgresにWindowsユーザー名が存在しない
エラーメッセージを見てみると、PostgresがWindowsのユーザー名でのユーザーを認識できていないことがわかります。
3. 解決策:PostgresにWindowsユーザーを作成、権限を付与
では、どうすればいいのでしょうか?その答えは、「PostgresにWindows名と同じユーザーを作成し、そのユーザーに管理者権限を付与する」というものです。以下に具体的な手順を示します。
1: アプリケーションメニューからSQL Shell(psql)を起動します。
スタートボタンを押してアプリケーション一覧から選んで下さい
postgresの項目の中にあります
2: 以下の情報を入力します
Server [localhost]: localhost
Database [postgres]: postgres
Port [5432]: 5432
Username [postgres]: postgres
Client Encoding [SJIS]: SJIS
パスワード: (Postgresをインストール時に設定したパスワード)
これで、postgresユーザーとしてPostgresにログインできます。
以下の画面が表示されるはずです
Copy code
psql (15.2)
postgres=#
以降#のあとに記載をしていきます
3: Postgresで新たなユーザーを作成し、権限を付与
まず、新しいユーザーを作成します。次に、そのユーザーにスーパーユーザー権限を付与します。以下のコマンドを使用します:
-- ユーザーを作成
CREATE USER windowsのユーザー名 WITH PASSWORD '任意のパスワード';
-- 権限を付与
ALTER USER windowsのユーザー名 WITH SUPERUSER;
4. 確認:作成したユーザーでの操作が可能かテスト
コマンドプロンプトを起動し、以下のコマンドを実行して新たに作成したユーザーでの操作が可能か確認します
createdb -O windowsのユーザー名 testdb
psql testdb
実行後、下記のように画面が変われば実行に成功しています
testdb=#
※上記の画面からログアウトするには、\qを入力して下さい。
以上で、Postgresのcreateuserコマンドが使えない問題が解決できるはずです。この投稿が皆さんの問題解決に役立つことを願っています!
※この投稿は、chatGPTで校閲しました。内容は、自身で実行・確認したものです。
指摘箇所などございましたら、コメントにてお願いします。