Saya mencoba menyiapkan Postgres untuk pertama kalinya, dan saya perlu membuat pengguna dengan izin untuk membaca dan membuat database. Namun, saat saya menggunakan:
createuser username
di terminal saya, saya mendapatkan pesan berikut:
createuser: tidak dapat terhubung ke database postgres: FATAL: role "tom" tidak ada
Tom adalah akun pengguna Ubuntu saya yang saya masuki sekarang. Saya mencoba membuat nama pengguna "postgres" lalu melakukan a psql -U psql template1
sehingga saya dapat membuat database dan menetapkan pemiliknya untuk aplikasi Rails saya.
database
postgresql
Tom Maxwell
sumber
sumber
Jawaban:
Anda menyebutkan Ubuntu jadi saya akan menebak Anda menginstal paket PostgreSQL dari Ubuntu melalui apt.
Jika demikian,
postgres
akun pengguna PostgreSQL sudah ada dan dikonfigurasi agar dapat diakses melaluipeer
otentikasi untuk soket unix dipg_hba.conf
. Anda bisa melakukannya dengan menjalankan perintah sebagaipostgres
pengguna unix, misalnya:Ini semua ada dalam dokumentasi Ubuntu PostgreSQL yang merupakan hit Google pertama untuk "Ubuntu PostgreSQL" dan tercakup dalam banyak pertanyaan Stack Overflow.
(Anda telah membuat pertanyaan ini jauh lebih sulit untuk dijawab dengan menghilangkan detail seperti OS dan versi yang Anda gunakan, cara Anda menginstal PostgreSQL, dll.)
sumber
pg_hba.conf
untuk menggunakanmd5
auth bagi pengguna itu (lihat manual); (b) Membuat pengguna OS dengan nama yang sama dan tetap menggunakanpeer
auth; atau (c) lebih lanjut, buatpg_ident.conf
pemetaan untuk memungkinkan pengguna OS Anda masuk sebagai pengguna baru.Lihat intinya dengan instruksi di sini
Jalankan ini:
ATAU
di terminal Anda untuk masuk ke postgres
postgres=#
Lari
CREATE USER new_username;
Catatan: Ganti nama_baru dengan pengguna yang ingin Anda buat, dalam kasus Anda itu adalah tom.
postgres=# CREATE USER new_username; CREATE ROLE
Karena Anda ingin pengguna tersebut dapat membuat DB, Anda perlu mengubah peran menjadi superuser
postgres=# ALTER USER new_username SUPERUSER CREATEDB; ALTER ROLE
Untuk mengonfirmasi, semuanya berhasil,
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- new_username | Superuser, Create DB | {} postgres | Superuser, Create role, Create DB, Replication | {} root | Superuser, Create role, Create DB | {} postgres=#
Pembaruan / Modifikasi (Untuk Mac):
Saya baru-baru ini mengalami kesalahan serupa di Mac saya:
psql: FATAL: role "postgres" does not exist
Ini karena instalasi saya diatur dengan superuser database yang nama perannya sama dengan nama login (pendek) Anda.
Tetapi beberapa skrip linux menganggap superuser memiliki nama peran tradisional
postgres
Bagaimana saya menyelesaikan ini?
Jika Anda menginstal dengan
homebrew
run:/usr/local/opt/postgres/bin/createuser -s postgres
/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres
ATAU:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username
ATAU:
/usr/local/opt/postgresql@11/bin/createuser -s postgres
/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres
PS: ganti 10.5 dengan versi PostgreSQL Anda
sumber
psql -U postgres
ini akan membantu Anda karena ini akan terjadi jika administrator belum membuat akun pengguna PostgreSQL untuk Anda. Bisa juga Anda diberi nama pengguna PostgreSQL yang berbeda dari nama pengguna sistem operasi Anda, dalam hal ini Anda perlu menggunakan tombol -U.
sumber
1- Login sebagai pengguna PostgreSQL default (postgres)
2- Sebagai pengguna postgres. Tambahkan pengguna database baru menggunakan
createuser
perintah[postgres]$ createuser --interactive
3-keluar
sumber
Kesalahan Anda diposting di dokumentasi resmi. Anda bisa membaca artikel ini .
Saya telah menyalin alasan Anda (dan membuat hyperlink URL) dari artikel itu:
Untuk tujuan Anda, Anda dapat melakukan:
1) Buat akun pengguna PostgreSQL:
(
-P
opsi untuk menyetel kata sandi;-d
opsi untuk mengizinkan pembuatan database untuk nama pengguna Anda 'tom'. Perhatikan bahwa 'tom' adalah nama pengguna sistem operasi Anda. Dengan begitu, Anda dapat menjalankan perintah PostgreSQL tanpasudo
ing.)2) Sekarang Anda harus dapat menjalankan
createdb
dan perintah PostgreSQL lainnya.sumber
Saya memiliki masalah yang sama, saya hanya melakukan ini
sudo su - postgres
createuser odoo -U postgres -dRSP #P untuk kata sandi ( odoo atau nama pengguna yang ingin Anda berikan akses postgres)
sumber
Pada penggunaan Windows:
C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>
Tambahkan
--superuser
atau--createdb
sesuai kebutuhan.Lihat https://www.postgresql.org/docs/current/static/app-createuser.html untuk opsi lebih lanjut.
sumber
Jika Anda tidak ingin mengubah metode otentikasi (ident) dan mengacaukan pg_hba.conf gunakan ini:
Pertama login sebagai pengguna default
kemudian akses psql dan buat pengguna dengan nama yang sama dengan yang Anda masuki
postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;
Anda dapat memverifikasi pengguna Anda dengan peran yang sesuai dengan
postgres=# \du
Setelah ini, Anda dapat membuat database Anda dan memverifikasinya dengan
sumber
Anda harus menjalankan initdb terlebih dahulu. Ini akan membuat cluster database dan pengaturan awal
Lihat Bagaimana cara mengkonfigurasi postgresql untuk pertama kalinya? dan http://www.postgresql.org/docs/8.4/static/app-initdb.html
sumber
initdb
mereka tidak akan menjalankan server database dan menerima koneksi untuk menghasilkan pesan kesalahan yang dilaporkan. Harap hapus jawaban yang menyesatkan ini. (BTW, di masa mendatang, harap tautkan ke / docs / current / static / untuk menghindari penumpukan tautan lama)