我已经安装了 PostgreSQL,它工作正常。但是,当我去恢复备份时,我收到了错误-bash: psql: command not found
:
[root@server1 ~]# su postgres
[postgres@server1 root]$ psql -f all.sql
bash: psql: command not found
[postgres@server1 root]$
我做错了什么?
我已经安装了 PostgreSQL,它工作正常。但是,当我去恢复备份时,我收到了错误-bash: psql: command not found
:
[root@server1 ~]# su postgres
[postgres@server1 root]$ psql -f all.sql
bash: psql: command not found
[postgres@server1 root]$
我做错了什么?
export PATH=/usr/pgsql-9.2/bin:$PATH
程序可执行文件psql
在目录/usr/pgsql-9.2/bin
中,并且该目录默认不包含在路径中,所以我们必须告诉我们的shell(终端)程序在哪里找到psql
。安装大多数软件包时,会将它们添加到现有路径,例如/usr/local/bin
,但不会添加到此程序。
因此,如果我们不想在每次执行程序时都输入程序的完整路径,我们必须将程序的路径添加到 shell PATH 变量中。
此行通常应添加到 shell 启动脚本中,对于 bash shell,该脚本将位于文件~/.bashrc
.
也许 psql 不在PATH
postgres 用户中。使用locate命令查找 psql 的位置,并确保它的路径在PATH
postgres 用户中。
这可能是由于 psql 不在 PATH 中
$ locate psql
/usr/lib/postgresql/9.6/bin/psql
然后在 /usr/bin 中创建一个链接
ln -s /usr/lib/postgresql/9.6/bin/psql /usr/bin/psql
然后尝试执行 psql 它应该可以工作。
如果您在Fedora或CentOS上运行它,这对我有用(PostgreSQL 9.6):
在终端:
$ sudo visudo -f /etc/sudoers
修改以下文本:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
到
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin
退出,然后:
$ printenv PATH
$ sudo su postgres
$ psql
要退出 postgreSQL 终端,您需要输入:
$ \q
来源:https ://serverfault.com/questions/541847/why-doesnt-sudo-know-where-psql-is#comment623883_541880
问题是针对 linux 的,但我在 Windows 机器上遇到了与 git bash 相同的问题。
我的 pqsql 安装在这里:
C:\Program Files\PostgreSQL\10\bin\psql.exe
您可以将 的位置添加psql.exe
到您的 Path 环境变量中,如下图所示:
更改上述内容后,请关闭所有cmd
和/或bash
窗口,然后重新打开它们(如@Ayush Shankar 评论中所述)
您可能需要使用以下命令更改默认日志记录用户。
psql -U postgres
这postgres
是用户名。如果没有-U
,它将选择 windows 登录用户。
如果您使用的是 Postgres Mac 应用程序(由 Heroku 提供)和 Bundler,您可以直接在应用程序内将 pg_config 添加到您的包中。
bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
...然后再次运行捆绑。
注意:首先使用以下命令检查版本。
ls /Applications/Postgres.app/Contents/Versions/
检查是否安装了 PostgreSQL。
如果没有,您可以使用此命令在 ubuntu 中执行相同操作。
sudo apt update
sudo apt install postgresql postgresql-contrib