PostgreSQL 服务器的启动和停止方法总结
请以中文本地化方式改述以下句子(只需要一种选择):
由于启动方法太多,让人感到困惑,因此我总结了一下。总体来说,可以分为以下几种方式。
-
- 从操作系统的守护进程管理命令启动的方法:
在macOS上…使用brew services命令
在Ubuntu上…使用service命令
在Windows 10上…使用net命令
从PostgreSQL的命令启动的方法:
使用postgres命令
使用pg_ctl命令
请用汉语将下列句子进行同义表达(只需要一种可能的版本):
1. I will meet my friends at the park tomorrow.
明天我会在公园见朋友。
2. He is studying for his exams.
他正在为考试而学习。
3. We went to the movies last night.
昨晚我们去看电影了。
4. She gave me a gift for my birthday.
她给了我一份生日礼物。
5. They are going on vacation next week.
他们下周要去度假。
首先
命令的总结
以下为例示。
#
# 1. OS のデーモン管理コマンドから、起動する方法
#
# 1.1. macOS の場合
# 起動
brew services start postgresql
# 停止
brew services stop postgresql
# 再起動
# なし pg_ctl で再起動する。
# 1.2. Ubuntu の場合
# 起動
sudo service postgresql start
# 停止
sudo service postgresql stop
# 再起動
# なし pg_ctl で再起動する。
# 1.3. Windows の場合
# お使いのパソコンの CPU、PostgreSQL のバージョンによって
# 末尾の -x64-12 は変わってきます。ここでは
# パソコンの CPU が 64 bit で
# PostgreSQL のバージョンが 12 の場合
# 起動
net start postgresql-x64-12
# 停止
net stop postgresql-x64-12
# 再起動
# なし pg_ctl で再起動する。
#
# 2. PostgreSQL のコマンドから、起動する方法
#
# 2.1. postgres コマンド
# 起動
postgres -D 設定ファイルへのパス
# 停止
# なし pg_ctl で停止する。
# 再起動
# なし pg_ctl で再起動する。
# 2.2. pg_ctl コマンド
# 起動
pg_ctl -D 設定ファイルへのパス start
# 停止
pg_ctl -D 設定ファイルへのパス stop
# 再起動
pg_ctl -D 設定ファイルへのパス restart
设置文件路径
「設定ファイルへのパス」的格式如下。
# 1) macOS の場合
postgres -D /usr/local/var/postgres
# 2) Ubuntu で PostgreSQL 10 の場合
# PostgreSQL のバージョンによって、ファイルパスが変わります。
postgres -D /etc/postgresql/10/main
# 3) Windows10 で PostgreSQL 12 の場合
# PostgreSQL のバージョンによって、ファイルパスが変わります。
# クォーテーション ' またはダブルクーテーション " で囲む必要があります。
postgres -D "C:/Program Files/PostgreSQL/12/data"
请用中文原生方式将以下内容改写,只需提供一种选项:
从守护进程管理命令中启动的方法
-
- 对于Windows10…使用net命令
-
- 对于macOS…使用brew services命令
- 对于Ubuntu…使用service命令
1.1. 对于 macOS 操作系统
假设您使用了sudo brew install postgresql来安装。
您可以使用sudo brew services命令进行操作。
sudo brew services start postgresql
sudo brew services stop postgresql
1.2. 对于Ubuntu的情况
假设您已使用sudo apt install postgresql命令进行了安装。
服务可以通过command命令进行操作。
sudo service postgresql start
sudo service postgresql stop
service命令-日経クロステック
用于启动、停止和检查指定的Linux守护进程(服务)的状态。实际上是一个shell脚本,可以通过文本编辑器打开/sbin/service来查看脚本的内容。
根据下面列出的文章,据说可以通过/etc/init.d/postgres进行操作,其执行内容与service命令相同,但使用service命令更方便。
sudo /etc/init.d/networking start
sudo /etc/init.d/networking stop
「/etc/init.d」是一个目录,用于存放守护进程等启动脚本。
service命令 – 日経クロステック
此外,service命令内部只是执行/etc/init.d(/etc/rc.d/init.d)目录下的服务脚本。因此,直接执行/etc/init.d目录下的脚本也可以完成和service命令相同的工作,但是使用命令可以避免需要逐一输入路径或显示所有服务状态的麻烦,更为方便。
1.3. 对于Windows的情况来说
假设您已经从官方网站下载并安装了专用的安装程序。
- Windows Installers – PostgreSQL
可以使用net命令进行操作。
net start postgresql-x64-12
net stop postgresql-x64-12
# 「管理者として実行」する必要があります。
- 図入りでわかりやすい How can I start PostgreSQL on Windows? – Stackoverflow
你可以通过GUI中的Services.msc来操作。如果不知道服务的名称,我建议你在这个GUI中确认并使用net命令。
# x64-12 という文字はお使いの環境によって、異なります。
Type here to search > Services.msc > postgresql-x64-12 > 右クリック > プロパティ > General タブ > start をクリック
Type here to search > Services.msc > postgresql-x64-12 > 右クリック > プロパティ > General タブ > stop をクリック
- 図入りでわかりやすい Stop PostgreSQL from starting on Windows? – StackExchange
〇 魔鬼是什么?
为了方便起见,我们将管理守护进程的brew services、service、net命令统称为“守护进程管理命令”。
- デーモン – 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
当把“デーモン”翻译成英文,就成了“daemon”。大约十年前,当我在写邮件的时候,如果填错了收件人,就会收到类似“This mail was sent from the mailer daemon.”的消息。当时我一边想着“メーラーだえもん”是什么意思,一边写着邮件。
最初,我想推荐使用操作系统的守护进程管理命令来启动。因为大多数情况下,通过操作系统提供的”通过守护进程管理命令启动”比”通过PostgreSQL命令启动”更加简单。原因有两点,详细情况将在后文中介绍。
-
- 因为不知道 PostgreSQL 的配置文件存储在哪里。
- 因为没有将 postgres 命令和 pg_ctl 命令添加到路径中。
- パスを通す – 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
请将以下内容以中文进行本地化解释,只需一种选项:
2. 从PostgreSQL直接启动的方法。
提供了以下两种选项。
-
- postgres 命令
pg_ctl 命令
– 〇 -D选项
-D选项用于写入配置文件的路径。
指定数据库配置文件的文件系统位置。有关详细信息,请参见第19.2节。
指定数据库配置文件的文件系统位置。如果省略此选项,将使用环境变量PGDATA。
〇 如何确认设置文件的路径
可以通过以下的SQL命令进行确认。
SHOW data_directory;
只有在通过Daemon管理命令启动,并授予了pg_read_all_settings权限的用户(准确来说是角色)可以使用psql命令连接到服务器。尽管使用场景可能不太常见。
如果不能使用postgres或pg_ctl的情况下
尽管可以使用psql命令,但有时可能无法使用其他重要命令,比如postgres命令或pg_ctl命令。
由于路径未设置,Postgres命令和pg_ctl命令可能无法使用。针对此症状,我在我的环境中设置了以下路径作为解决办法。
# macOS の場合
/usr/local/opt/postgresql@10.12/bin
# Ubuntu の場合
/usr/lib/postgresql/10/bin/
# Windows10 の場合
C:\Program Files\PostgreSQL\12\bin
# PostgreSQL のバージョンごとにパスが変化することに
# 留意してください。
起初,我非常错误地以为每个操作系统的命令系统都是不同的。
-
- pg_ctl: command not found, what package has this command? – Ask Ubuntu
- WSL にて postgres コマンドが使えない。 – teratail
如果你不明白的话,在这种情况下,我认为最好的方法是不要强迫自己,而是可以从上述的守护进程管理命令开始并停止。
有疑問
为什么其他命令在安装后无法自动添加路径,而只有 psql 在安装 PostgreSQL 时会被特殊处理并添加路径使其可用?
通过通行证将会大量注册命令。
$ ls /usr/lib/postgresql/10/bin/
clusterdb dropuser pg_basebackup pg_dumpall pg_resetwal pg_test_fsync pgbench reindexdb
createdb initdb pg_controldata pg_isready pg_restore pg_test_timing postgres vacuumdb
createuser oid2name pg_ctl pg_receivewal pg_rewind pg_upgrade postmaster vacuumlo
dropdb pg_archivecleanup pg_dump pg_recvlogical pg_standby pg_waldump psql
$
为了避免意外地添加路径,导致与已经存在的命令重名,从而引发问题,是否是为了避免自动添加所有路径?在添加路径时,请自行注意并负起责任哦,是否有这样的考虑?如果像Docker一样能够将命令层次化就好了。
〇 postgres 和 pg_ctl 之间的区别
pg_ctl 命令似乎是 postgres 命令的包装器。
在postgres程序中,您可以指定许多其他命令行选项。有关详细信息,请参考postgres手册页面和第19章。这些shell语法往往很长。因此,pg_ctl包装程序提供了简化某些任务的功能。
18.3. 启动数据库服务器
大多数情况下,我觉得封装对功能有所限制。因为封装是为了让「复杂的东西更容易使用」,所以为了简化而减少了功能。
- ラッパ – 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
然而,从“PostgreSQL服务器的启动和停止方法总结”这个角度来看,pg_ctl命令不仅可以“启动”,还可以“停止”和“重新启动”,功能比postgres命令更加丰富。postgres命令没有提供“停止”或“重新启动”的功能。
根据文件显示,据说 pg_ctl 是 postgres 命令的包装器,所以我以为 postgres 命令也可能有“停止”或“重新启动”的选项,但我还没能找到。
我对pg_ctl和postgres命令的关系以及它们的使用差异并不清楚。目前我只是暂时使用pg_ctl来统一,因为postgres命令中没有停止(stop)选项。
对此存在疑问
我觉得如果没有困扰的话,不使用命令也没关系,可以保持原样。偶尔可以在示例代码中看到使用这些命令来说明数据库的简单操作,例如用户的创建和删除、数据库的创建和删除等。但是,如果仅限于这种程度,我认为还是可以通过psql进行操作。
# これらのコマンドが使えなくても...
createdb
dropdb
createuser
dropdb
# psql でサーバにログインして操作できる。
CREATE DATABASE
DROP DATABASE
CREATE USER
DROP USER
为什么会有两种类型的命令,对于 createuser 命令我在 teratail 上写了。
- [PostgreSQL] createuserコマンドの-Uについて – teratail
请用中文将以下内容进行释义,只需提供一种选项:
– The boy is running in the park.
最后
以上是我全部的回答。非常感谢你。
请用中国母语重新表述以下内容: