首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Slackware和postgres

Slackware和postgres
EN

Unix & Linux用户
提问于 2022-03-27 15:10:30
回答 2查看 338关注 0票数 0

我想通过Slackbuild安装postgres和psql,我这样做了。安装它之后,我试着按照Slackbuild自述的自述运行命令,但在运行它时会出现一个错误。

代码语言:javascript
复制
su postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"

应该是一行,从您复制和粘贴的内容来看,您在一行上有su,然后命令的其余部分在其他行上。我不确定这是否只是你的格式化问题,但事实并非如此。另外,您报告的错误消息似乎支持这样的想法,即您没有在一行上给出命令,也没有以正确的用户身份运行命令等等。我尝试通过源代码安装它,它非常复杂,所以我回到通过Slackbuild安装它。在我需要运行之前,一切都很好:代码:

代码语言:javascript
复制
su postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"

当我尝试以多种方式运行上述命令时,我就是这样做的。它不执行,我认为这就是为什么Postgres不起作用。我决定学习如何使用Slackware、Linux、PSQL和Full Stack,以便使我的知识库最大化,并为Slackware项目做出贡献。我注意到,在通过这个博客安装postgres时,一些重要的存档程序并没有出现在我计划添加的Sbo网站中。这个家伙在Slackware上有一些有趣的博客:下面的http://www.pmoghadam.com/homepage/HT...esql-epkg.html是我执行命令的尝试,你认为是怎么回事?

代码语言:javascript
复制
bash-5.1$ su postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
Password: 
su: Authentication failure
bash-5.1$ sudo postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise.  See the documentation for
more information on how to properly start the server.
bash-5.1$ su - postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
Password: 
su: Authentication failure
bash-5.1$ su - postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
Password: 
su: Authentication failure
bash-5.1$ su postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
Password: 
su: Authentication failure
bash-5.1$ su postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
Password: 
su: Authentication failure
bash-5.1$ su postgres -c init -D /var/lib/pgsql/14/data --locale-en_US.UTF-8 -A md5 -W
su: invalid option -- 'D'
Usage: su [options] [-] [username [args]]

Options:
  -c, --command COMMAND         pass COMMAND to the invoked shell
  -h, --help                    display this help message and exit
  -, -l, --login                make the shell a login shell
  -m, -p,
  --preserve-environment        do not reset environment variables, and
                                keep the same shell
  -s, --shell SHELL             use SHELL instead of the default in passwd

If no username is given, assume root.



bash-5.1$ su
Password: 
bash-5.1# postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise.  See the documentation for
more information on how to properly start the server.
bash-5.1# su - postgres

We are upping our standards ... so up yours.
                -- Pat Paulsen for President, 1988

postgres@Bern:~$ postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"
2022-03-27 14:57:17.257 GMT [32152] FATAL:  unrecognized configuration parameter "initdb _D /var/lib/pgsql/14/data __locale"
postgres@Bern:~$ postgres -c initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W
2022-03-27 14:57:30.413 GMT [32155] FATAL:  -c initdb requires a value
postgres@Bern:~$

我不知道为什么这不起作用,因为我听了,并跟随着神圣的读我。我相信Linux的方式,更重要的是Slackware是一款神灵和神奇的软件。我会继续寻找结果。

6.0 / import_db.sh

代码语言:javascript
复制
#!/usr/bin/env sh

dropdb sqlzoo
createdb sqlzoo
psql sqlzoo < data/create_tables.sql
ls

在需要使用psql的项目文件的目录中。我收到以下错误:

代码语言:javascript
复制
bash-5.1# cd skeleton
bash-5.1# ls
Gemfile  Gemfile.lock  data  database  import_db.sh  lib  logfile  spec
bash-5.1# ./import_db.sh 
dropdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?
Gemfile  Gemfile.lock  data  database  import_db.sh  lib  logfile  spec
bash-5.1# startdb
bash: startdb: command not found
bash-5.1# initdb
initdb: error: no data directory specified
You must identify the directory where the data for this database system
will reside.  Do this with either the invocation option -D or the
environment variable PGDATA.
bash-5.1# psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?
bash-5.1# 
bash-5.1# nano import_db.sh 

为什么会发生此错误?为什么我不能用psql?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-03-31 18:30:41

好的,所有这些都应该由SlackBuild完成,并包含在包中:

代码:

基数据库目录

假设您使用/var/lib/pgsql作为postgres用户

的homedir

mkdir -p $PKG/var/lib/pgsql/$PG_VERSION/data chown -R postgres:postgres $PKG/var/lib/pgsql chmod 700 $PKG/var/lib/pgsql

DATADIR的

权限应为u=rwx (0700)

chmod 700 $PKG/var/lib/pgsql/$PG_VERSION/data

只要OP作为根用户在README.SBo中运行数据库创建命令,/var/lib/pgsql/14/data下的子目录也应该是正确的权限。

基本上,postgresql中的所有内容都应该由用户postgres拥有,用户postgres是进程的所有者。因此,chown LOCATION_OF_DATADIR就足够了。代码:

chown -R postgres:postgres /var/lib/pgsql

如果您还没有在默认的超级用户(即用户postgres )旁边创建任何postgresql用户,那么如果您想修改数据库,包括将自己的用户添加到postgresql,然后可以使用自己的用户而不是postgres登录postgresql,则应该将su创建为user postgres。

代码语言:javascript
复制
$ su -
# su postgres
$ createuser your_username

linux安全模型的一部分是基于最小特权原则的。大多数进程是以系统用户的身份运行,而不是以根用户的身份运行。如果您查看/etc/passwd文件,除了根用户和常规用户之外,还有许多用户,这些用户就是系统用户。他们只有足够的权限来运行他们的服务。postgresql的系统用户是postgres。数据库目录是拥有的,并且只具有用户postgres的读/写权限。

由于系统用户通常没有密码,您需要先以root身份登录,然后运行su postgres -c initdb .

或者仅仅从根部

苏波格雷斯..。

票数 0
EN

Unix & Linux用户

发布于 2022-08-25 23:28:51

我遇到了同样的问题,这就是对我起作用的原因:

代码语言:javascript
复制
su -l

停止postgres以防止其运行

代码语言:javascript
复制
/etc/rc.d/rc.postgresql stop

然后

代码语言:javascript
复制
cd /var/lib/pgsql/14/data

最后,从Slackbuilds README.SBo发出命令

代码语言:javascript
复制
su postgres -c "initdb -D /var/lib/pgsql/14/data --locale=en_US.UTF-8 -A md5 -W"

之后,我得到了输入数据库密码的提示,并配置了所有内容。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/697003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档