psql: FATAL: ভূমিকা "postgres" বিদ্যমান নেই


404

আমি একজন পোস্টগ্রিস নবাগত।

আমি ম্যাকের জন্য postgres.app ইনস্টল করেছি। আমি পিএসকিএল কমান্ডগুলি নিয়ে খেলছিলাম এবং আমি ঘটনাক্রমে পোস্টগ্রিজ ডাটাবেসটি ফেলে দিয়েছিলাম। আমি জানি না এতে কী ছিল।

আমি বর্তমানে একটি টিউটোরিয়াল নিয়ে কাজ করছি: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/

আর আমি আটকে আছি sudo -u postgres psql postgres

ভুল বার্তা: psql: FATAL: role "postgres" does not exist

ps যা পিএসএলএল

/Applications/Postgres.app/Contents/MacOS/bin/psql

এই কি প্রিন্ট আউট psql -l

                                List of databases
    Name    |   Owner    | Encoding | Collate | Ctype |     Access privileges     
------------+------------+----------+---------+-------+---------------------------
 user       | user       | UTF8     | en_US   | en_US | 
 template0  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
 template1  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
(3 rows)

তাহলে আমার কী পদক্ষেপ নেওয়া উচিত? পিএসকিএল সম্পর্কিত সমস্ত কিছু মুছবেন এবং সবকিছু পুনরায় ইনস্টল করবেন?

সাহায্য বলছি জন্য ধন্যবাদ!


1
কম্পিউটার পুনরায় চালু করা হচ্ছে। নিশ্চিত করা হয় যে লঞ্চটি brew services start postresqlকার্যকর হয়েছে।
মাইকেল ডিম্মিট

উত্তর:


409

দ্রষ্টব্য: আপনি যদি হোমব্রিউ ব্যবহার করে পোস্টগ্রাগগুলি ইনস্টল করেন তবে নীচে @ ব্যবহারকারী3402754 থেকে মন্তব্যটি দেখুন।

নোট করুন যে ত্রুটি বার্তাটি কোনও অনুপস্থিত ডাটাবেস সম্পর্কে কথা বলে না , এটি অনুপস্থিত ভূমিকা সম্পর্কে কথা বলে। পরে লগইন প্রক্রিয়াটি এটি হারিয়ে যাওয়া ডাটাবেসের উপরেও হোঁচট খায়।

তবে প্রথম পদক্ষেপটি অনুপস্থিত ভূমিকাটি পরীক্ষা করা: psqlকমান্ডের মধ্যে আউটপুটটি কী \du? আমার উবুন্টু সিস্টেমে প্রাসঙ্গিক লাইনটি দেখতে দেখতে:

                              List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 postgres  | Superuser, Create role, Create DB | {}        

যদি এতে অন্তত একটি ভূমিকা না থাকে superuserতবে আপনার একটি সমস্যা রয়েছে :-)

যদি একটি থাকে, আপনি লগইন করতে এটি ব্যবহার করতে পারেন। আর তোমার আউটপুট দিকে তাকিয়ে \lজন্য অনুমতি: কমান্ড userউপর template0এবং template1ডাটাবেস সুপার-ইউজার জন্য আমার উবুন্টু সিস্টেমে মতই postgres। সুতরাং আমি মনে করি আপনার সেটআপটি userসুপার-ইউজার হিসাবে সাধারণ ব্যবহার করে। সুতরাং আপনি এই আদেশটি লগইন করতে চেষ্টা করতে পারেন:

sudo -u user psql user

যদি userসত্যিই ডিবি সুপারউজার হয় তবে আপনি তার জন্য অন্য একটি ডিবি সুপারজার এবং একটি ব্যক্তিগত, খালি ডেটাবেস তৈরি করতে পারেন:

CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;

তবে যেহেতু আপনার postgres.app সেটআপটি এটি করে বলে মনে হচ্ছে না, তাই আপনারও করা উচিত নয়। টিউটোরিয়ালটি সহজভাবে মানিয়ে নিন।


10
আমার জন্য, ব্যবহারকারী তৈরি করা হচ্ছে না - এর পরিবর্তে CREATE USER postgres WITH SUPERUSER PASSWORD 'password'; পোস্টগ্রিজ ভি 10 ব্যবহার করছি।
আর্সেল্ডন

228
আপনি যদি homebrew/usr/local/opt/postgres/bin/createuser -s postgres
পোস্টগ্রিসটি

7
আমাকে দৌড়াতে হয়েছিল/usr/local/opt/postgresql/bin/createuser -s postgres
ব্যবহারকারী1807782

1
@ ব্যবহারকারী1807782 আপনি আমার দিন বাঁচিয়েছেন; আমি মনে করি আপনার উত্তর হিসাবে এটি বিজ্ঞাপন করা উচিত।
tolga

1
আপনি যদি /usr/local/opt/postgresql@11/bin/createuser -s postgres
পোস্টগ্রিজের

264

কীটি হ'ল আমি ম্যাকের জন্য পোস্টগ্রাস.এপ ইনস্টল করেছি। এই অ্যাপ্লিকেশনটি স্থানীয় পোস্টগ্রিজএসকিউএল ইনস্টলেশনটি একটি ডাটাবেস সুপারসারের সাথে সেট আপ করে যার ভূমিকার নামটি আপনার লগইন (সংক্ষিপ্ত) নামের মতো।

Postgres.app যখন প্রথম শুরু হয়, এটি একটি $ USER ডাটাবেস তৈরি করে, যা যখন কোনও কিছুই নির্দিষ্ট না করা হয় তখন পিএসকিএল-এর জন্য ডিফল্ট ডাটাবেস। ডিফল্ট ব্যবহারকারী হলেন $ USER, কোনও পাসওয়ার্ড ছাড়াই।

কিছু স্ক্রিপ্ট (উদাহরণস্বরূপ, pgdumpলিনাক্স সিনস্টেমের সাহায্যে একটি ডাটাবেস ব্যাকআপ তৈরি করা হয়েছে) এবং টিউটোরিয়ালগুলি ধরে নেবে যে সুপারুসারটির .তিহ্যগত ভূমিকাটির নাম রয়েছে postgres

আপনি আপনার স্থানীয় ইনস্টলটিকে কিছুটা traditionalতিহ্যবাহী দেখতে এবং একবারে এই সমস্যাগুলি এড়াতে পারেন:

/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres

যা সেই ফ্যাটালগুলিকে তৈরি করবে : ভূমিকা "পোস্টগ্রিস" অস্তিত্ব নেই


119
আপনি যদি হোমব্রিউ থেকে পোস্টগ্রিজ ব্যবহার করছেন তবে আপনি চান /usr/local/Cellar/postgresql/9.2.4/bin/createuser -s postgres(সংস্করণ 9.2.4, স্পষ্টতই)।
রজার লিপসক্বে

1
Postgres.app 9.3 এর জন্য, তারা ডিরেক্টরিগুলি পুনরায় সাজিয়েছে বলে মনে হয়। আমি চেষ্টা করেছি: / অ্যাপ্লিকেশনস / পোস্টগ্র্রেস.এপ / কনটেন্টস / ভার্সন / 9.3/bin/createuser -s পোস্টগ্রাগস, কিন্তু এটি একই ইমর বার্তাটি উত্পন্ন করেছে: "ক্রিয়েটর: ডেটাবেস পোস্টগ্রাসের সাথে সংযোগ করতে পারেনি: FATAL: ভূমিকা" postgres "বিদ্যমান নেই "
মাইকেল কক্সন

7
/Applications/Postgres.app/Contents/Versions/9.3/bin/createuser -s postgresআমার জন্য সঠিকভাবে দৌড়ে।
সিজেস্পারউইন

9
@ রোজারলিপসকম আপনি যদি brew link postgresqlইনস্টলেশন পরে চালান , পুরো পথটি সংযোজন করার দরকার নেই createuser, একটি সাধারণ createuser -s postgresকাজ করবে দুর্দান্ত
AlessioX

2
createuser -s postgresআমার জন্য কাজ। আমি হোমব্রিউয়ের সাথে
পোস্টগ্রাগগুলি

227

ম্যাকের জন্য:

  1. হোমব্রিউ ইনস্টল করুন
  2. brew install postgres
  3. initdb /usr/local/var/postgres
  4. /usr/local/Cellar/postgresql/<version>/bin/createuser -s postgresবা /usr/local/opt/postgres/bin/createuser -s postgresযা কেবল সর্বশেষতম সংস্করণ ব্যবহার করবে।
  5. ম্যানুয়ালি পোস্টগ্রিজ সার্ভার শুরু করুন: pg_ctl -D /usr/local/var/postgres start

শুরুতে সার্ভার শুরু করতে

  • mkdir -p ~/Library/LaunchAgents
  • ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  • launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

এখন এটি সেট আপ হয়ে গেছে, psql -U postgres -h localhostজিইউআইয়ের জন্য লগইন করুন বা PgAdmin ব্যবহার করুন।

ডিফল্টরূপে ব্যবহারকারীর postgresকোনও লগইন পাসওয়ার্ড থাকবে না।

এই জাতীয় আরও নিবন্ধের জন্য এই সাইটটি দেখুন: https://medium.com/@Nithanaroy/installing-postgres-on-mac-18f017c5d3f7


3
সর্বাধিক ব্রিউ ইনস্টল সহ আপনি brew services start postgresqlপোস্টগ্রিজ শুরু করতে পারেন
অটোমেটিকো

<3 <3 <3 <3 <3 <3
আদিল আহমদ


39
createuser postgres --interactive

বা ঠিক এর সাথে একটি সুপারউজার পোস্টগ্র্যাসেল তৈরি করুন

createuser postgres -s


আমি যখন এই উত্তরটি দরকারী তখন খুঁজে পেলাম যখন আমার প্যাগাডমিন পোস্টগ্রিজ ব্যবহারকারীদের জিজ্ঞাসা করতে থাকে এবং আমার পোস্টগ্রিসের ভূমিকাটি শুরু হয় না, এই আদেশটি এটি তৈরি করেছিল, আমি আমার প্যাগাডমিনে অটোজেনেটেড পিডব্লিউ যুক্ত করেছি এবং সমস্যার সমাধান!
দৈনিক

এটি আমার পক্ষে কাজ করে .. তবে এইভাবে: "ব্যবহারকারীর পোস্টগ্রাগস তৈরি করুন"
রবার্তো রদ্রিগেজ

31

আপনি যখন initdbএমন কোনও ব্যবহারকারীর সাথে রান করুন যার আইডি নেই postgres, postgresসঙ্গে --username=postgresবা তার সাথে ব্যবহারকারীর নাম উল্লেখ না করে -U postgres

এরপরে ডাটাবেস ক্লাস্টারটি সিস্টেমের ব্যবহারকারীর অ্যাকাউন্ট দিয়ে তৈরি করা হয় যা আপনি initdb চালানোর জন্য ব্যবহার করেছিলেন এবং এটি সুপারসারের অনুমতি দেওয়া হয়।

এটি ঠিক করার জন্য, পোস্টগ্রিসের সাথে উপস্থিত ইউটিলিটিটি ব্যবহার করে postgresবিকল্পটির সাথে নতুন একটি ব্যবহারকারী তৈরি করুন । ইউটিলিটি পোস্টগ্রিস ডিরেক্টরিতে পাওয়া যাবে । যেমন--superusercreateuserbin

createuser --superuser postgres

আপনার যদি কাস্টম হোস্টনাম বা পোর্ট থাকে তবে উপযুক্ত বিকল্পগুলি সেট করতে ভুলবেন না ।

আপনার জন্য ডিডিডিবি দ্বারা তৈরি করা অন্যান্য ব্যবহারকারীর অ্যাকাউন্টটি মুছতে ভুলবেন না।


2
এটি সবচেয়ে তথ্যপূর্ণ উত্তর।
MyWrathAcademia

17

আমার জন্য, এই কোডটি কাজ করেছে:

/Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres

এটি এখান থেকে এসেছে: http://talk.growstuff.org/t/fatal-rol-postgres-does-not-exist/216/4


আমার জন্য কাজ করে! আপনি আমার বেকন সংরক্ষণ করেছেন।
ডেভ মুঙ্গার

1
আমি "আমি" চরিত্রে উপস্থিতি পাই না
সুপারউবারডুপার

এর অর্থ কী এই নতুন পোস্টগ্র্যাস ব্যবহারকারীর পাসওয়ার্ড থাকবে না?
olaoluwa_98

16

আমার আনসেট করা দরকার $PGUSER:

$ unset PGUSER
$ createuser -s postgres

1
ওহ মানুষ, অবশেষে সমস্যাটি কী ছিল তা পেয়েছি। এটি আমাদের হয়ে গেছে আপনি ব্যবহারকারীর
পোস্টগ্রিজ

14

প্রথমে আপনাকে একটি ব্যবহারকারী তৈরি করতে হবে:

sudo -u postgres createuser --superuser $USER

আপনি একটি ডাটাবেস তৈরি করার পরে :

sudo -u postgres createdb $USER

$USERআপনার সিস্টেমের ব্যবহারকারীর নাম পরিবর্তন করুন

আপনি এখানে সম্পূর্ণ সমাধান দেখতে পারেন ।



4

ড্রপ postgresডাটাবেসের সত্যিই কোন ব্যাপার না। এই ডাটাবেসটি প্রাথমিকভাবে খালি এবং এর উদ্দেশ্যটি কেবল postgresব্যবহারকারীদের সাথে সংযুক্ত হওয়ার জন্য এক ধরণের "বাড়ি" থাকা উচিত, যদি এটির প্রয়োজন হয়।

তবুও আপনি এটি এসকিউএল কমান্ড দিয়ে পুনরায় তৈরি করতে পারেন CREATE DATABASE postgres;

নোট করুন যে প্রশ্নে উল্লিখিত টিউটোরিয়ালটি মাথায় রেখে লেখা হয়নি postgres.app। সাধারণভাবে ইউনিক্সের জন্য পোস্টগ্রিএসকিউএল এর বিপরীতে, postgres.appকোনও সাধারণ অ্যাপ্লিকেশনটির মতো দেখানোর চেষ্টা করে যে কোনও পরিষেবা কোনও সাধারণ ডেডিকেটেড postgresব্যবহারকারী দ্বারা চালিত হবে যা আপনার সাধারণ ব্যবহারকারীর চেয়ে আলাদা সুবিধাযুক্ত। postgres.appপরিচালনা এবং আপনার নিজের অ্যাকাউন্ট দ্বারা পরিচালিত হয়।

সুতরাং এই কমান্ডটির পরিবর্তে: sudo -u postgres psql -U postgresপোস্টগ্রেস.অ্যাপটিকে কেবল ইস্যু করার ক্ষেত্রে এটি আরও বেশি হবে: psqlযা স্বয়ংক্রিয়ভাবে আপনার ব্যবহারকারীর নামের সাথে মেলে এমন একটি ডাটাবেসের সাথে সংযুক্ত হয়ে যায় এবং একই নামের একটি ডিবি অ্যাকাউন্টের সাথে সুপার्युসার হিসাবে দেখা যায়, তাই এটি অনুমতি অনুসারে কিছু করতে পারে।


ঠিক আছে. কিন্তু আমি ERROR: cannot drop the currently open databaseযখন ইউজারকে ডিবি মোছার চেষ্টা করব তখন কেন আমি ত্রুটি পাব ? সুতরাং এই postgres.app ব্যবহার করা কি ভাল অনুশীলন নয়?
ব্যবহারকারী 805981

আপনি সংযুক্ত থাকাকালীন কোনও ডিবি ড্রপ করতে পারবেন না। আপনি কেন, যাইহোক এটি মুছতে চান? এটি আপনার সুবিধার জন্য এখানে।
ড্যানিয়েল ভ্যারিট

আমি কেবল দেখতে পারছিলাম কিনা। সুতরাং এটি আমার ডিফল্ট ডাটাবেসের মতো ঠিক যখন আমি আমার পিএসএইচএল এবং পোস্টগ্রিস.এপ বুট করি? এখন অ্যাক্সেস সুবিধা সম্পর্কে কি? আমি আর সেট করতে পারছি না? আমি দেখতে পাচ্ছি যে টেমপ্লেট 0 এবং টেমপ্লেট 1 এর অ্যাক্সেস সুবিধাগুলি রয়েছে
ব্যবহারকারী 805981

@ ব্যবহারকারী 805981 Postgres.appপরীক্ষা এবং উন্নয়নের জন্য; এটি হিরোকুর একটি পোস্টগ্রিসকিউএল প্যাকেজ যা রবি অন রুবেলের সাথে বিকাশকারী ম্যাক ব্যবহারকারীদের জন্য ডিফল্ট এসকিউএলাইটের পরিবর্তে পোস্টগ্র্রেএসকিউএল দিয়ে পরীক্ষা করা সহজ করার জন্য ডিজাইন করা হয়েছে। রেলগুলি এসকিউএলাইটের সাথে পরীক্ষার জন্য পোস্টগ্রিএসকিউএল স্থাপন করার প্রবণতা ব্যবহার করে যার ফলে সমস্ত ধরণের সমস্যা দেখা দিয়েছে, তাই হিরোকু পোস্টগ্র্রেএসকিউএল-তেও পরীক্ষা করা আরও সহজ করার চেষ্টা করেছিল। Postgres.appপরীক্ষার জন্য ঠিক আছে, তবে আমি এটি উত্পাদন বা বাস্তব ডেটার জন্য ব্যবহার বিবেচনা করব না, এটি কেবল এটিই নয় not
ক্রেগ রিঞ্জার

4

এটির মূল্যের জন্য, আমি উবুন্টু এবং অনেকগুলি প্যাকেজ ইনস্টল করেছি এবং এটি এর সাথে বিরোধে লিপ্ত।

আমার জন্য সঠিক উত্তরটি ছিল:

sudo -i -u postgres-xc
psql

2

এটিই কেবল আমার জন্য এটি স্থির করে:

createuser -s -U $USER

2
এটি বর্তমান পোস্টটিকে কেবল একটি পোস্টগ্রিজ সুপারইজারের পরিবর্তে সিস্টেমের সুপারভাইজার করে তোলে। আমি বলব এটি সাধারণত একটি খারাপ ধারণা হবে কারণ এটি সাধারণ সুরক্ষা নীতিগুলিকে পরিস্কার করে। আপনার ব্যবহারকারীর sudoঅস্থায়ী superuser সুবিধা অর্জন করা উচিত ।
শন ডসন

1

উবুন্টু সিস্টেমে আমি পোস্টগ্রিজ এসকিউএল পরিষ্কার করে আবার ইনস্টল করেছি installed সমস্ত ডাটাবেস পুনরুদ্ধার করা হয়। এটি আমার জন্য সমস্যার সমাধান।

পরামর্শ - নিরাপদ দিক হতে ডাটাবেসগুলির ব্যাকআপ নিন।


0

আমার মনে হয় না যে এখানে sudo দরকার কারণ psql -l ডাটাবেসগুলির একটি তালিকা ফেরত দেয়। এটি আমাকে বলে যে initdb ব্যবহারকারীর বর্তমান ব্যবহারকারীর অধীনে পরিচালিত হয়েছিল, পোস্টগ্রিজ ব্যবহারকারীর অধীনে নয়।

আপনি কেবল পারেন:

psql

এবং টিউটোরিয়াল চালিয়ে যান।

আমি পোস্টগ্র্রেস ব্যবহারকারী এবং ডিবি তৈরির জন্য এএইচ এর সাধারণ পয়েন্টগুলি পরামর্শ দেব কারণ অনেক অ্যাপ্লিকেশন এটির উপস্থিতি আশা করতে পারে।

একটি সংক্ষিপ্ত ব্যাখ্যা:

অপারেটিং সিস্টেমে প্রশাসনিক অ্যাক্সেস সহ পোস্টগ্রিএসকিউএল চলবে না। পরিবর্তে এটি একটি সাধারণ ব্যবহারকারীর সাথে চলে, এবং পিয়ার প্রমাণীকরণকে সমর্থন করার জন্য (যে সংযোগের চেষ্টা করছেন ওএসকে জিজ্ঞাসা করছেন) এটি একটি ব্যবহারকারী তৈরি করে এবং প্রাথমিক ব্যবহার প্রক্রিয়া চালিত ব্যবহারকারীর সাথে ডিবি করে। এই ক্ষেত্রে এটি আপনার সাধারণ ব্যবহারকারী ছিল।


পোস্টগ্র্যাসে কয়েকটি গুরুত্বপূর্ণ পার্থক্য সাফ করে। ধন্যবাদ.
imsrgadich

0

brew services stop postgresqlআগের দিন মৃত্যুদণ্ড কার্যকর করে আমি এই বিষয়ে আটকে গিয়েছিলাম ।
পরের দিন: brew services start postgresqlকাজ করবে না। এটি কারণ আপনি হোমব্রু ব্যবহার করে ইনস্টল করার সময় প্রদর্শিত হয়। postgresql একটি চালু করা ব্যবহার করে ... যা আপনার কম্পিউটারটি চালিত হলে লোড হয়।

রেজোলিউশন:
brew services start postgresql
আপনার কম্পিউটার পুনরায় চালু করুন।


0

\duকমান্ড প্রত্যাবর্তন:

ভূমিকা নাম = postgres@implicit_files

এবং এই আদেশটি postgres=# \password postgresত্রুটি ফেরত:

ত্রুটি: ভূমিকা "postgres" বিদ্যমান নেই।

কিন্তু সেটা postgres=# \password postgres@implicit_files রান।

এছাড়াও sudo -u postgres createuser -s postgresপ্রথম বৈকল্পিকের পরেও কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.