【问题标题】:PostgresQL: how to start up the database server and create a databasePostgresql:如何启动数据库服务器并创建数据库
【发布时间】:2012-10-05 13:03:07
【问题描述】:

当我尝试运行服务器时:

postgres@ubuntu:~$ /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
LOG:  could not bind IPv4 socket: Address already in use
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
WARNING:  could not create listen socket for "localhost"
FATAL:  could not create any TCP/IP sockets postgres@ubuntu:~$ 

然后我将用户更改为我自己:

postgres@ubuntu:~$ su - michael

michael@ubuntu:~$  sudo netstat -tulpn | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      959/postgres 

好吧,postgres 似乎正在监听端口,这似乎是问题所在。

让我们将 pack 更改为 postgres 并尝试终止此进程:

postgres@ubuntu:~$ kill `cat /usr/local/pgsql/data/postmaster.pid`

反应是:

cat: /usr/local/pgsql/data/postmaster.pid: No such file or directory
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

你能推荐我如何进行吗?

【问题讨论】:

    标签: postgresql-9.2


    【解决方案1】:

    首先,获取正在运行的 Postgres pid:

    ps -ef | grep postmaster | grep -v grep | awk '{print $2}'
    

    然后杀死它

    kill <the_pid_you_just_got>
    

    但除非您尝试使用 Postgres(多个实例...)做一些非常特别的事情,否则您应该使用 sudo /etc/init.d/postgresql stop 停止它> (或 sudo /etc/init.d/postgres stop)并使用 sudo /etc/init.d/postgresql start

    启动它

    Postgres 作为服务 运行,因此它有一个服务控制文件/脚本负责正确启动和停止它。这些控制文件过去位于 /etc/init.d 中,但我必须承认,随着服务管理系统(init、upstart、systemd...)的数量不断增加,这些文件变得有些混乱了

    【讨论】:

    • 好吧,我试过 ps -ef | grep 邮政局长 | awk '{打印 $1}'。在用户 michael 下,它显示 michael。好吧,我按照你的建议停止了 Postgres。现在没有什么可以监听端口了。我听不懂你关于开始的评论。所以,我删除了数据目录。然后我从 /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data 开始。反应是:创建目录/usr/local/pgsql/data ... initdb:无法创建目录“/usr/local/pgsql/data”:权限被拒绝。之前我通过 sudo 手动创建了数据目录。现在: /usr/local$ ls -l 结果
    • drwxr-xr-x 6 root root 4096 Oct 5 17:25 pgsql。也许我应该从头开始,使用另一个目录而不是 /usr/local?
    • 当我运行这个命令时,我得到了 502 。所以我然后执行了命令kill 502,但随后得到了错误-bash: kill: (502) - No such process
    • 每次运行第一个命令时都会得到不同的 ps id
    • 建议的行是错误的,将显示 grep 进程本身。正确的版本是ps -ef | grep postmaster | grep -v grep | awk '{print $2}'。如果这是空白,则没有任何名为 postmaster 的运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2019-09-16
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多