【问题标题】:Unable to locate PostgreSQL folder找不到 PostgreSQL 文件夹
【发布时间】:2017-10-10 08:16:19
【问题描述】:

我正在尝试找出或重置我的 PostgreSQL 密码,我不知道,但我需要该密码才能将我的数据库从 SQLite3 迁移到 PostgreSQL。

我试图找到 hba_conf 文件,所以在我输入的终端中:

ps aux | grep postgres

我发现我需要找到的目录是:

/Library/PostgreSQL/9.6/bin/postmaster -D/Library/PostgreSQL/9.6/data

我现在的问题是无法找到此文件,因为它显然不存在!当我 cd 到 Library 时,我无法继续前进,因为没有列出 PostgreSQL 文件夹。

这对我来说有点死胡同,因为我不知道为什么没有 PostgreSQL。 PSQL 随我的 Rails 版本一起提供,我对其进行了更新。当我在终端中输入:“psql -V”时,答案是“psql (PostgreSQL) 9.6.3”。

非常感谢您的帮助,谢谢:-)


从库文件夹中,如果我运行“sudo su”然后输入 ls,我会得到以下信息:

.localized      Calendars       Dictionaries        Internet Plug-Ins   
Maps            Saved Application State WebKit
Accounts        CallServices        Favorites       Keyboard        
Messages        Screen Savers       com.apple.nsurlsessiond
Address Book Plug-Ins   ColorPickers        FontCollections     
Keyboard Layouts    Metadata        Services        iMovie
Application Scripts Colors          Fonts           KeyboardServices    
Passes          Sharing
Application Support Compositions        GameKit         Keychains       
PreferencePanes     Sounds
Assistant       Containers      Google          LanguageModeling    
Preferences     Spelling
Assistants      Cookies         Group Containers    LaunchAgents        
Printers        Suggestions
Audio           CoreData        IdentityServices    Logs            
PubSub          SyncedPreferences
Caches          CoreFollowUp        Input Methods       Mail            
Safari          Voices

如果我输入 ps 我会得到:

PID TTY           TIME CMD
359 ttys000    0:00.02 login -pfl robertosullivan /bin/bash -c exec -
la bash /bin/bash
3267 ttys000    0:00.02 sudo su
3269 ttys000    0:00.01 su
3270 ttys000    0:00.00 sh
3271 ttys000    0:00.00 ps

如果我尝试 'sudo find / -name psql' - 我得到:

find: /dev/fd/Library: No such file or directory
find: /dev/fd/Library: No such file or directory
/Library/PostgreSQL/9.6/bin/psql
/usr/local/bin/psql
/usr/local/Cellar/postgresql/9.6.3/bin/psql

当我尝试 'sudo find /Library/PostgreSQL/9.6/data -name *.conf' 时,我得到:

/Library/PostgreSQL/9.6/data/pg_hba.conf
/Library/PostgreSQL/9.6/data/pg_ident.conf
/Library/PostgreSQL/9.6/data/postgresql.auto.conf
/Library/PostgreSQL/9.6/data/postgresql.conf

【问题讨论】:

  • /Library/PostgreSQL/9.6/data列为sudo用户
  • 对不起-我忘了说我在输入'sudo su'后也试图找到这个,但结果相同
  • 为什么你认为文件夹是/Library/PostgreSQL/9.6/data 那么呢?.. 我没有看到在 ps 输出中运行 postgres?..
  • 我在这个网站上关注了一个帖子,告诉我这是找到 conf_hba 文件的方法。直到你提到它,我才知道 ps,我只是想找到我的 PSQL 密码。
  • 但我确实使用“brew services stop/restart postgresql”停止并重新启动 psql - 尽管这在 ps 之后呈现相同的结果

标签: ruby-on-rails macos postgresql


【解决方案1】:

安装过程会创建一个名为 postgres 的用户帐户,该帐户与默认 Postgres 角色相关联。为了使用 Postgres,我们可以登录该帐户。

您可以直接使用 sudo 使用 postgres 帐户运行您想要的命令

 sudo -u postgres psql  

这将提示输入 postgres 用户的密码。

如果您没有此 postgres 用户的密码,请按照以下步骤操作:

 sudo vim /etc/postgresql/9.3/main/pg_hba.conf

在第 84,85 行周围将其更改为

 # Database administrative login by Unix domain socket
 local   all             all              trust

然后通过SUDO命令重启PostgreSQL服务

  sudo /etc/init.d/postgresql restart

现在你可以运行命令直接用sudo登录postgres账户了

    sudo -u postgres psql 

您现在将进入并看到 Postgresql 终端。成功登录 postgres 后,您可以通过命令更改密码

     \password

并为 Postgres 默认用户输入新密码,在成功更改密码后再次转到 pg_hba.conf 并将更改恢复为“md5”

现在将第 84,85 行更改为

 # Database administrative login by Unix domain socket
 local   all             all              md5

然后通过SUDO命令重启PostgreSQL服务

  sudo /etc/init.d/postgresql restart

现在您将以身份登录

  psql -U postgres 

使用您的新密码。

如果您有任何问题,请告诉我。

【讨论】:

  • 感谢您提供非常全面的答案。不幸的是,我被困在 sudo vim 部分——这似乎把我带到了一个空白且无响应的页面。我已经搜索了编辑此页面的命令或方法,但到目前为止一无所获
  • @Robert ,您还可以使用 sudo nano /etc/postgresql/9.3/main/pg_hba.conf 编辑 pg_hba.conf 文件
  • 在 sudo nano 我也有一个空白文件。我试图在这个文件中添加“#Database Administrative login by Unix domain socket local all all tr​​ust”,但不是在第 84,85 行,因为没有数字。当我尝试退出 nano sudo 时,我得到: [ Error writing /etc/postgresql/9.3/main/pg_hba.conf: No such file or directory ]
  • @Robert,进行必要的更改后,使用 ctl + x 保存文件。然后会提示您“保存修改的缓冲区”,按 Y 保存更改
  • 这是我尝试过的 - ctrl + x,但我收到上述错误消息
【解决方案2】:

当我们将您的 data_dir 识别为 /Library/PostgreSQL/9.6/data/ 并在其中找到配置文件时,我们发现您的 postgres 集群正在使用 pg_ctl: server is running (PID: 88) /Library/PostgreSQL/9.6/bin/postgres "-D/Library/PostgreSQL/9.6/data 运行,为了重置您的密码,请执行以下操作:

  1. 成为 postgres 用户:sudo su - postgres
  2. 使用psql在本地登录
  3. alter user USERNAME password 'NEW_PASSWORD'重置密码

之后,您可以使用新密码使用psql -U USERNAME -h localhost 以该用户身份连接

【讨论】:

  • 对不起,我不明白第二阶段。如果此时我输入 psql,系统会提示我输入我没有的 psql 密码。
  • 如果它要求 postgres 用户输入密码,请更改 /Library/PostgreSQL/9.6/data/pg_hba.conf md5 以与 local 对等并运行 pg_ctl -D /Library/PostgreSQL/9.6/data reload 并重试
  • 我一直在尝试在 VIM 中编辑 pg_pga.conf 文件,但我发现的只是一个底部带有“新目录”的空白文件
  • 用 sudo 用户来代替
  • 你的意思是输入:sudo user /Library/PostgreSQL/9.6/data/pg_hba.conf?我已经尝试过了,但系统提示我输入一个我没有的密码。
猜你喜欢
  • 2018-08-17
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 2015-03-30
  • 2021-08-10
相关资源
最近更新 更多