สร้างฐานข้อมูลจากบรรทัดคำสั่ง


115

ฉันกำลังพยายามสร้างฐานข้อมูลจากบรรทัดคำสั่ง ระบบปฏิบัติการของฉันคือ centos และเวอร์ชัน postgres คือ 10.9

sudo -u postgres psql createdb test
Password for user test:

ทำไมต้องถามฉันโดยผู้ใช้


คำตอบ:


157

เปลี่ยนผู้ใช้เป็น postgres:

su - postgres

สร้างผู้ใช้สำหรับ Postgres

$ createuser testuser

สร้างฐานข้อมูล

$ createdb testdb

ใช้กับ postgres Shell

psql ( enter the password for postgressql)

ให้สิทธิพิเศษแก่ผู้ใช้ postgres

$ alter user testuser with encrypted password 'qwerty';
$ grant all privileges on database testdb to testuser;

24
สำคัญ: createuser และ createdb ถูกรันในเชลล์ไม่ใช่ด้วย psql
Kim Kern

22
แต่ถ้ารันด้วย psql คำสั่งที่ถูกต้องคือcreate user testuser; create database testdb;
kiril

66

ลอง:

sudo -u postgres psql -c 'create database test;'

9
อย่าลืมให้สิทธิ์ด้วย:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer

32

createdbเป็นยูทิลิตี้บรรทัดคำสั่งที่คุณสามารถเรียกใช้จาก bash ไม่ใช่จาก psql ในการสร้างฐานข้อมูลจาก psql ให้ใช้คำสั่งสร้างฐานข้อมูลดังนี้:

create database [databasename];

หมายเหตุ: อย่าลืมปิดท้ายคำสั่ง SQL ของคุณด้วย ;


3
บวกหนึ่งสำหรับคำใบ้เกี่ยวกับการลงท้ายด้วย;
Jstuff

แค่อยากจะแสดงความคิดเห็นว่า Postgres ทำให้ UPPERCASE ต่ำลง ดังนั้นจริงจะสร้างฐานข้อมูลชื่อCREATE DATABASE FOO fooฉันใช้เวลาประมาณ 5 นาทีในการค้นหาว่าทำไม "ฐานข้อมูลไม่มีอยู่" ดู: stackoverflow.com/questions/43111996/…
O-9

26

ดังที่บางคำตอบชี้ให้เห็นcreatedbคือยูทิลิตี้บรรทัดคำสั่งที่สามารถใช้ในการสร้างฐานข้อมูล

สมมติว่าคุณมีชื่อผู้ใช้dbuserคำสั่งต่อไปนี้สามารถใช้เพื่อสร้างฐานข้อมูลและให้การเข้าถึงdbuser:

createdb -h localhost -p 5432 -U dbuser testdb

แทนที่localhostด้วยชื่อโฮสต์ DB ที่ถูกต้องของคุณ5432ด้วยพอร์ต DB ที่ถูกต้องและtestdbด้วยชื่อฐานข้อมูลที่คุณต้องการสร้าง

ตอนนี้psqlสามารถใช้เพื่อเชื่อมต่อกับฐานข้อมูลที่สร้างขึ้นใหม่นี้:

psql -h localhost -p 5432 -U dbuser -d testdb

ทดสอบด้วยcreatedbและรุ่นpsql9.4.15


นี่เป็นวิธีที่ถูกต้องในการสร้างฐานข้อมูลบนอินสแตนซ์ที่ฉันไม่สามารถ ssh ได้ ความพยายามทั้งหมดในการเรียกใช้ "CREATE DB" เป็น -c param สำหรับยูทิลิตี้ psql ระยะไกลถือว่ามีฐานข้อมูลที่มีชื่อเหมือนผู้ใช้
Gili Garibi

14

ตามการกำหนดค่าเริ่มต้นของ Postgres ผู้ใช้ที่เรียกว่าpostgresจะถูกสร้างขึ้นและผู้ใช้postgresมีสิทธิ์เข้าถึงผู้ดูแลระบบขั้นสูงแบบเต็มไปยังอินสแตนซ์ PostgreSQL ทั้งหมดที่ทำงานบนระบบปฏิบัติการของคุณ

sudo -u postgres psql

คำสั่งดังกล่าวทำให้คุณได้รับอินเทอร์เฟซบรรทัดคำสั่ง psql ในโหมดผู้ดูแลระบบ

กำลังสร้างผู้ใช้

sudo -u postgres createuser <username>

การสร้างฐานข้อมูล

 sudo -u postgres createdb <dbname>

หมายเหตุ: ห้ามใช้ <> ในขณะที่เขียนคำสั่ง แต่จะใช้เพื่อแสดงความหมายของตัวแปร


2
PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB

หากคุณเปลี่ยน 'PGDB' เป็น 'PGDATABASE' และส่งออก (หรือนำหน้าเป็นคำสั่ง) คุณไม่จำเป็นต้องส่งผ่านคำสั่งเหล่านี้ไปยังคำสั่งมันจะอ่านจากสภาพแวดล้อม
Connor Bell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.