পোস্টগ্রিএসকিউএল ত্রুটি: মারাত্মক: ভূমিকা "ব্যবহারকারীর নাম" বিদ্যমান নেই


731

আমি আমার PostgreSQL 9.1 সেট আপ করছি। পোস্টগ্র্রেএসকিউএল দিয়ে আমি কিছু করতে পারি না: createdbপারি না createuser; সমস্ত অপারেশন ত্রুটি বার্তা ফিরে

Fatal: role h9uest does not exist

h9uestsudo apt-get installএই অ্যাকাউন্টের অধীনে আমার অ্যাকাউন্টের নাম এবং আমি পোস্টগ্রাইএসকিউএল 9.1।
অনুরূপ ত্রুটি rootঅ্যাকাউন্টের জন্য স্থায়ী ।


1
এরপরে আপনি এটিকে চালিয়ে যেতে পারেন FATAL: role "user" is not permitted to log in, তার জন্য dba.stackexchange.com/questions/57723/… পরীক্ষা করুন ।
kqw

19
আমি এই প্রশ্নের উত্তর এখানে । এই টিউটোরিয়ালটি খুব পড়ুন " উবুন্টু লিনাক্সের জন্য পোস্টগ্রিস কীভাবে ইনস্টল করবেন "।
রুজেনহ্যাক

@ রুজেনহ্যাক এই টিউটোরিয়াল লিঙ্কটি আমার প্রয়োজন মতো ছিল! খুব স্পষ্ট এবং সরল
দ্বারসন

4
psql -h লোকালহোস্ট -U পোস্টগ্রিস
মেটিন

আপনি যদি ত্রুটি role doesn't existএবং ত্রুটিটি পান তবে can't create role, it already existsএই উত্তরটি দেখুন: stackoverflow.com/a/56658832/1689770
জোনাথন

উত্তর:


773

আপনার ডাটাবেস তৈরি করতে অপারেটিং সিস্টেম ব্যবহারকারীর ব্যবহার করুন postgres- যতক্ষণ না আপনি সেই একই নামের ( আপনার ক্ষেত্রে) অপারেটিং সিস্টেম ব্যবহারকারীর সাথে সঙ্গতিপূর্ণ প্রয়োজনীয় সুবিধাগুলি সহ কোনও ডাটাবেস ভূমিকা সেট না করে রেখেছেন h9uest:

sudo -u postgres -i

এখানে বা এখানে প্রস্তাবিত হিসাবে ।

তারপরে আবার চেষ্টা করুন। exitসিস্টেম ব্যবহারকারী হিসাবে অপারেটিংয়ের সাথে কাজ করার সময় টাইপ করুন postgres

অথবা একক কমান্ড প্রয়োগ createuserযেমন postgresসঙ্গে sudoমত drees দ্বারা প্রদর্শিত অন্য উত্তর হবে।

মূল কথাটি হ'ল অপারেটিং সিস্টেম ব্যবহারকারীর একই নামের ডেটাবেস ভূমিকার সাথে মেলে যা identপ্রমাণীকরণের মাধ্যমে অ্যাক্সেস দিতে পারে । postgresডাটাবেস ক্লাস্টার শুরু করার জন্য ডিফল্ট অপারেটিং সিস্টেম ব্যবহারকারী। ম্যানুয়াল:

ডাটাবেস সিস্টেম বুটস্ট্র্যাপ করার জন্য, একটি সতেজ আরম্ভ করা সিস্টেমে সর্বদা একটি পূর্বনির্ধারিত ভূমিকা থাকে। এই ভূমিকাটি সর্বদা একটি "সুপারইউজার" হয় এবং ডিফল্টরূপে (চলমান অবস্থায় পরিবর্তন না করা হয় initdb) এটিতে অপারেটিং সিস্টেম ব্যবহারকারীর একই নাম থাকবে যা ডাটাবেস ক্লাস্টার সূচনা করেছিল। প্রথাগতভাবে, এই ভূমিকা নামকরণ করা হবে postgres। আরও ভূমিকা তৈরি করতে আপনাকে প্রথমে এই প্রাথমিক ভূমিকা হিসাবে সংযুক্ত হতে হবে।

অ-স্ট্যান্ডার্ড ব্যবহারকারীর নাম বা অপারেটিং সিস্টেম ব্যবহারকারীর অস্তিত্ব নেই এমন অদ্ভুত সেটআপগুলি শুনেছি। সেখানে আপনার কৌশলটি মানিয়ে নিতে হবে।

ম্যানুয়ালটিতে ডাটাবেসের ভূমিকা এবং ক্লায়েন্ট প্রমাণীকরণ সম্পর্কে পড়ুন ।


1
sudo etcব্যবহারকারীর পোস্টগ্রিজ হিসাবে চালানো অসম্ভব ... একটি প্রোগ্রাম কীভাবে ইনস্টল করবেন? দেখুন এই S2geometry ইনস্টলেশন সমস্যা
পিটার ক্রাউস

কনফিগারেশন উপর নির্ভর করে, একটি সহজভাবে প্রয়োজন হতে পারে su postgres
ফ্যাবিয়েন স্নোওয়ার্ট

1
sudo -u postgresকাজ করে না, কাজ করার সময় sudo -u postgres -i! কী -iপতাকা না?
পার্সসার

1
@ পার্সার: একটি ইন্টারেক্টিভ শেল শুরু হয়, এর মতো su, তবে সুডো সুবিধাগুলির উপর ভিত্তি করে। দেখুন man sudo
এরউইন ব্র্যান্ডসটেটার

284

অন্যান্য অনেক লোকের সমাধান চেষ্টা করার পরেও এবং সফলতা ছাড়াই, এই উত্তরটি আমাকে শেষ পর্যন্ত সাহায্য করেছিল।

https://stackoverflow.com/a/16974197/2433309

সংক্ষেপে, চলমান

sudo -u postgres createuser owning_user

নামের মালিকানা দিয়ে একটি ভূমিকা তৈরি করে (এই ক্ষেত্রে, h9uest)। এর পরে আপনি rake db:createপোস্টগ্রিস পরিবেশে প্রবেশ না করেই যে কোনও অ্যাকাউন্টের নাম সেট আপ করে আপনি টার্মিনাল থেকে চালাতে পারেন ।


29
এর পরে যদি আপনি "অপর্যাপ্ত সুযোগ সুবিধাগুলি" ত্রুটি পান তবে আপনি উপরের কমান্ডটিতে -s পতাকা যুক্ত করতে পারেন। এটি আপনার নতুন ব্যবহারকারীকে সুপারভাইজার হিসাবে তৈরি করবে। আপনি এটি করার সিদ্ধান্ত নেওয়ার পরে দয়া করে এটির সুরক্ষা সম্পর্কিত প্রভাব সম্পর্কে সচেতন হন।
sarink

1
আমি "অপর্যাপ্ত সুযোগ সুবিধাগুলি" পাচ্ছি, তবে এখন আমি ERROR পেয়েছি: রোল "ব্যবহারকারীর নাম" ইতিমধ্যে বিদ্যমান।
উইলিয়াম জড

4
@ কননরলিচ আপনি আপনার পিজি সুপার ব্যবহারকারীর নামের সাথে 'পোস্টগ্রিজ' প্রতিস্থাপন করতে পারেন। আমার ক্ষেত্রে এটি আমার নাম ছিল।
মাইফ্যাশনহাব

1
আমাকেও ব্যবহার করতে হয়েছিল -s, এবং ব্যবহার করার দরকার নেই sudo -u postgres(সবেমাত্র ভাল createuser new_userকাজ করেছে)
মেকোহি

2
psql: FATAL: role "jonny" does not existঠিক আছে তাই sudo -u postgres -s createuser jonnyতাহলে কেন createuser: creation of new role failed: ERROR: role "jonny" already exists
জোনাথন

134
sudo su - postgres

psql template1

"সুপারইউজার" হিসাবে বিশেষাধিকার সহ পিএএসকিউএল-তে ভূমিকা তৈরি করা

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

তারপরে ব্যবহারকারী তৈরি করুন

CREATE USER username; 
eg. CREATE USER demo;

ব্যবহারকারীর জন্য বিশেষাধিকার বরাদ্দ করুন

GRANT ROOT TO username;

এবং তারপরে সেই ব্যবহারকারীকে লগইন সক্ষম করুন, যাতে আপনি চালাতে পারেন যেমন:, psql template1সাধারণ $টার্মিনাল থেকে :

ALTER ROLE username WITH LOGIN;

4
আমি স্রেফ পোস্টগ্র্যাসকিউএল 9.4.4 এর একটি নতুন ইনস্টল করেছি এবং একটি নতুন সুপারসার তৈরি করতে অনুসরণটি ব্যবহার করতে সক্ষম হয়েছি: CREATE ROLE username superuser createdb login; যা তিনটি ধাপকে একত্রিত করে ...
আইপ্যাড গাই

25
# আমার কাছে মূল রুট; ত্রুটি: ভূমিকা "রুট" বিদ্যমান নেই
শেকার

6
সহজ সংস্করণ: sudo -u postgres createuser --superuser $USER; sudo -u postgres createdb $USER
জ্যাচ এস্তেলা

2
@ শ্যাকার#GRANT postgres TO username
কেমজমানি

আমি সার্ভারটি শুরু করার জন্য রুটটি ব্যবহার করছি তারপরে `` `পিএইচসিএল-ইউ পোস্টগ্র্যাস -h 127.0.0.1 - কম্যান্ড" সুপারস্টার পাসওয়ার্ডের সাথে পোস্টগ্র্রেসন্ডোকার 'দিয়ে ব্যবহারকারী তৈরি করুন পোস্টগ্র্রেসন্ডোকার'; " && \ createdb -O postgresondocker postgresondocker`` আমি যদি পিজি-ভিস্টেন্টে যোগ করি তবে আমি এটি করতে রুট ব্যবহার করতে পারি?
শিবাঙ্গী সিং

85

ব্যবহার apt-getকরে পোস্টগ্রাগ ইনস্টল করা কোনও ব্যবহারকারীর ভূমিকা বা ডেটাবেস তৈরি করে না।

আপনার ব্যক্তিগত ব্যবহারকারীর অ্যাকাউন্টের জন্য একটি অতিরিক্ত ব্যবহারকারীর ভূমিকা এবং একটি ডেটাবেস তৈরি করতে:

sudo -u postgres createuser -s $(whoami); createdb $(whoami)


1
আমার দ্বিতীয় অংশটি চালানোর দরকার ছিল:sudo -u postgres createdb $(whoami)
সানডে

2
@ সানডি আপনি যদি নিজের ব্যবহারকারী অ্যাকাউন্টটিকে একটি সুপার ব্যবহারকারী হিসাবে তৈরি করেন ( -sপ্রথম কমান্ডের পতাকা দিয়ে), আপনি নিজের মতো করে ডাটাবেস তৈরি করতে পারেন। আপনি createdbহিসাবে চালানোর প্রয়োজন হবে না postgres
মাইলস এরিকসন

2
দুর্দান্ত উত্তর! আমাকে ডিবাগিংয়ের ঘন্টা বাঁচিয়েছে !!
আমিনু কানো

79

এটি আমার পক্ষে কাজ করে:

psql -h localhost -U postgres

উপরের ব্যবহারকারীর জন্য পাসওয়ার্ড যুক্ত করুন।
চৌদ্দ ওয়াকাস

1
@ ভিনসেন্ট যদি পোস্টগ্রাইএসকিউএল ইনস্টলেশনের পরে পাসওয়ার্ডটি কখনও পরিবর্তন না করা হয় তবে ডিফল্টরূপে এটি postgres(লিনাক্স এবং উইন্ডোজে পরীক্ষিত) হয়।
সিলভিওপ্রোগ

1
role postgres does not exist
জ্যাকব স্নাইডার

15

কাজের পদ্ধতি,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer এখানে পরিবর্তন পিয়ার থেকে আস্থা
  3. আবার শুরু, sudo service postgresql restart

  4. এখন চেষ্টা করুন, psql -U postgres


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

এটি ভাল
হরিয়ই ও

চেক করুন: যদি পোস্টগ্র্যাস্ক্ল পরিষেবাটি চালু না করা হয় তবে সম্ভবত ফাইলে কিছু ত্রুটি হতে পারেpg_hba.conf
হাঁটুন


11
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;

4
psql postgresফলাফল:psql: FATAL: role "root" does not exist
টমসওয়ায়ার

2
psql postgres -U postgres? আপনার ব্যবহারকারীর উপর নির্ভর করে (-উ)।
মেডোয়ালার্ক ব্র্যাডশার

ধন্যবাদ! পোস্টগ্র্রেস পাসওয়ার্ড না জানার পরে আমি কীভাবে পোষ্টগ্র্যাস্কলকে ব্যাকআপ করতে পারি তা সংগ্রাম করেছিলাম
ডিকা

7

স্থানীয় ব্যবহারকারী প্রম্পটে, রুট ব্যবহারকারী প্রম্পট নয়, টাইপ করুন

sudo -u postgres createuser <local username>

তারপরে স্থানীয় ব্যবহারকারীর জন্য পাসওয়ার্ড লিখুন।

তারপরে পূর্ববর্তী কমান্ডটি প্রবেশ করান যা "ভূমিকা 'ব্যবহারকারীর নাম' উপস্থিত নেই exist"

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



3

ম্যানুয়ালি একটি ডিবি ক্লাস্টার তৈরি করা আমার ক্ষেত্রে এটি সমাধান হয়েছে।

কিছু কারণে, যখন আমি পোস্টগ্রাগগুলি ইনস্টল করেছি, তখন "প্রাথমিক ডিবি" তৈরি হয়নি। নির্বাহinitdb আমার জন্য কৌশলটি করেছে।

এই দ্রষ্টব্য পোস্টগ্র্রেএসকিউএল উইকিতে সরবরাহ করা হয়েছে - প্রথম পদক্ষেপ :

initdb

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


2

জন্য উইন্ডোজ ব্যবহারকারী:psql -U postgres

তারপরে আপনার পোস্টগ্র্রেএসকিউএল-র কমান্ড-লাইন ইন্টারফেসটি দেখতে হবে: postgres=#


0

এই পদক্ষেপগুলি অনুসরণ করুন এবং এটি আপনার পক্ষে কার্যকর হবে:

  1. চালান msfconsole
  2. টাইপ করুন db_console
  3. আপনাকে কিছু তথ্য প্রদর্শন করা হবে যা আপনাকে তৈরি করতে বলেছে সেই তথ্যগুলি: db_connect user:pass@host:port.../databaseদুঃখিত আমি এটি মনে করি না তবে এটি এর মতো তবে ব্যবহারকারী এবং পাসওয়ার্ড এবং হোস্ট এবং ডেটাবেসগুলিকে অন্তর্ভুক্ত থাকা তথ্যের সাথে প্রতিস্থাপন করুনdatabase.yml প্রতিস্থাপনের প্রতিস্থাপন করুন :/usr/share/metasploit-framework/config
  4. তুমি দেখবে. পটভূমিতে মডেল ক্যাশে পুনর্নির্মাণ।
  5. অ্যাপট-গেট আপডেট টাইপ করুন & আপডেটের পরে আপডেটটি টার্মিনাল এবং লাঞ্চের এমএসফোনসোলটি পুনরায় চালু করুন এবং এটি কাজ করে আপনি টাইপ করে msfconsole: msf>db_statusদেখতে পারবেন যে এটি সংযুক্ত আছে।

0

ডাম্প এবং সাথে পুনরুদ্ধার --no-owner --no-privilegesপতাকা

যেমন

ডাম্প - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

পুনরুদ্ধার - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump

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