簡體   English   中英

如何在 Google Colab 中運行 PostgreSQL 時向“psql”命令提供密碼

[英]How to supply password to 'psql' command while running PostgreSQL in Google Colab

我在 Google Colab 中安裝了 PostgreSQL 服務器,如下所示:

# Install postgresql server
!apt update > /dev/null
!apt install postgresql > /dev/null
!service postgresql start

然后按如下方式配置“postgres”用戶標識和數據庫:

# Setup a password `pass` for username `postgres`
!sudo -u postgres psql -U postgres -c "ALTER USER postgres PASSWORD 'pass';"
#
# Setup a database with name `praxis` to be used
!sudo -u postgres psql -U postgres -c 'DROP DATABASE IF EXISTS praxisdb;'
!sudo -u postgres psql -U postgres -c 'CREATE DATABASE praxisdb;'

隨后,我創建了一個表,插入數據並運行 select 命令

!psql -h localhost -p 5432 -Upostgres -W -dpraxisdb -c 'create table dept ... ;'
!psql -h localhost -p 5432 -Upostgres -W -dpraxisdb -c "INSERT INTO Dept  ... ;"
!psql -h localhost -p 5432 -Upostgres -W -dpraxisdb -c "select * from dept;"

所有這一切都很完美,但每次都會提示我輸入密碼。 我希望避免每次都輸入密碼。 根據我在使用密碼文件的文檔中閱讀的內容,我創建了一個文件 ~/.pgpass 如下:

!echo "localhost:5432:praxisdb:postgres:pass" > ~/.pgpass
!chmod 0600 ~/.pgpass

現在,當我執行任何命令時,例如。

!psql -c "select * from dept;"

我得到錯誤

psql: error: FATAL:  role "root" does not exist

這個角色根從何而來? 我查看了文件 ~/.pgpass 並注意到它的所有者和組是root並且我使用chownchgrp將其更改為postgres ,但這並沒有解決問題。 在這種情況下我還應該做什么來解決問題。

Postgres和OS的版本如下:

!sudo -u postgres psql -V
psql (PostgreSQL) 12.13 (Ubuntu 12.13-0ubuntu0.20.04.1)

您誤解了密碼文件的工作原理。 您仍然需要在連接請求中指定主機、端口、數據庫和用戶。 客戶端庫然后在密碼文件中搜索匹配的條目並讀取密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM