【问题标题】:How to run postgresql command from GCE shell?如何从 GCE shell 运行 postgresql 命令?
【发布时间】:2014-03-31 09:21:03
【问题描述】:

在 GCE 上安装 PostgreSQL 需要 root 密码才能运行 sudo -u postgresql。这会提示我输入密码,但我从未得到过。
如何获得此通行证,或以其他方式从 shell 运行 postgresql 命令的任何方式?

【问题讨论】:

    标签: postgresql google-compute-engine


    【解决方案1】:

    您的系统用户 postgresql 没有密码(我说没有证据……但我认为您会发现这是真的。)

    通常你应该使用这样的命令:

    # Test that YOU can use psql (as postgres) to run a query:
    psql -U postgres -c 'select * from pg_catalog.pg_user;'
    
    # Test an interactive session:
    psql -U postgres my_database
    my_database=# select 42 as the_answer;
    
    # Create a new database
    psql -U postgres my_database
    my_database=# create database mydb;
    


    或者,也可以这样登录 (it usually is):

    sudo su postgres
    

    您可能会使用它来运行 createdb。但是像你自己一样运行 psql 可能会更好。

    【讨论】:

    • 我能找到 ATM 的唯一分辨率是最后一个:sudo su postgres。从那里 psql 命令就可以正常工作了。
    • 这是一个很好的解决方案。以不同用户身份使用 psql 的障碍是什么? (或者是什么错误?)
    【解决方案2】:

    如果你想对你的 postgresql 服务器运行命令,你不需要使用 sudo,只需使用这个语法进入 Postgresql 交互式 Shell:

    psql -U username database_name
    

    psql -U username hostname database_name
    

    username 替换为您的 postgresql 用户名,将 hostname(如果不在同一台服务器上运行)替换为服务器主机名,将 database_name 替换为您的数据库的名称。例如:

    psql -U postgressql customers
    

    【讨论】:

    • 谢谢,但这不适用于createdb 命令或createuser 命令,这是我正在尝试运行的。我运行psql -U postgres createdb mydb 并得到Peer authentication failed for user "postgres"
    • createdb -U postgres,假设你的用户名是 postgres。您需要能够创建数据库的有效角色才能使用它。你有用户吗?
    • 添加了一个 postgres 用户作为 db 安装的一部分。这是安装日志中的一行:Adding user postgres to group ssl-cert。我必须承认在发出 apt-get 后我没有设置任何其他内容,但我确信 linux 用户 postgres 存在并且默认的 db 用户 postgres 也是自动创建的。现在的问题是 - 如果没有能力运行 su - postgres 怎么能发出 createuser 命令?
    • postresql 角色和系统用户是两个不同的东西,根本不需要相关,默认情况下如果你没有在命令行上用 -U(或 --username) 选项,它将尝试使用运行命令的相同用户名连接到服务器。您是否验证了服务器正在运行,以及创建了哪些 postgresql 用户(不是系统用户)。
    【解决方案3】:

    通常sudo 需要您的用户帐户密码。因此,假设您运行命令的帐户列在sudoers 文件中,它提示您输入的密码应该是您自己的。您是否尝试过,而不是 root 或 postgresql 密码,您似乎没有(或者甚至可能没有设置)。

    【讨论】:

    • 正确,我的帐户在sudoers 文件中列出,但我的登录帐户和root 帐户都没有登录密码。 Google 使用根证书而不是用户名/密码将您登录到 GCE 框。所以我不能用
    • 您的帐户是实例创建者吗?由于 GCE 说实例创建者应该有无密码 sudo ,你可以尝试sudo -s 来获得一个 root shell,或者 sudo su postgres
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多