无法使用postgres创建空数据库 - 更改目录

时间:2017-06-12 23:19:35

标签: linux database postgresql ubuntu syntax

我正在通过postgres学习SQL。我理解数据库的基本概念,但我遇到了一些IT问题。我关注this tutorial

转到我的工作目录:

myname@myname:~$ cd Dropbox/working_directory

建立新用户:

myname@myname:~/Dropbox/working_directory$ sudo -u postgres createuser --interactive
[sudo] password for myname: 
could not change directory to "/home/myname/Dropbox/working_directory": Permission denied
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y

好吧,它无法改变工作目录,但它让我添加" sammy",然后设置" sammy"成为超级用户这是怎么回事?

根据教程,应该创建一个与用户同名的数据库。这似乎是武断的。是这样吗?无论如何,当我去尝试创建一个名为" sammy"的数据库时,我收到一条错误,我无法更改工作目录:

myname@myname:~/Dropbox/working_directory$ sudo -u  postgres createdb sammy
could not change directory to "/home/myname/Dropbox/working_directory": Permission denied

查看文件浏览器,我看不到任何" sammy"

的迹象

1。为什么我不能更改工作目录?如何创建一个空数据库?这种行为背后的逻辑是什么?

2。是命名它" sammy"看起来像荒谬一样?用户是否需要与数据库命名相同?为什么或为什么不呢?

它似乎无助于登录与postgres一起安装的postgres身份:

myname@myname:~/Dropbox/working_directory$ sudo -i -u postgres
[sudo] password for myname: 
postgres@myname:~$ pwd
/var/lib/postgresql
postgres@myname:~$ cd /home
postgres@myname:/home$ cd /home/myname/
-bash: cd: /home/myname/: Permission denied
好的,那没用。现在,回到myname @ myname:

postgres@myname:/home$ sudo -i -u myname
[sudo] password for postgres: 
Sorry, try again.
[sudo] password for postgres: 
Sorry, try again.
[sudo] password for postgres: 
sudo: 3 incorrect password attempts
postgres@myname:/home$ 

这是我开始发誓的地方。

第3。如何摆脱postgres身份?除了关闭终端并打开另一个终端?

1 个答案:

答案 0 :(得分:1)

你在几个层面上感到困惑。

  1. 消息

    could not change directory to "...": Permission denied
    
    来自PostgreSQL或createusercreatedb命令的不是 ,而是来自sudo

    它告诉您,在成为操作系统用户postgres后,它无法在当前目录中运行,因为用户postgres没有所需的文件系统权限。

    然而,处理继续(在不同的工作目录中),并且createusercreatedb命令成功。

  2. createusercreatedb不会在当前工作目录中创建内容,而是在数据库目录中创建。

    此目录属于postgres,您可以使用

    找到它
    echo $PGDATA
    

    当您是用户postgres时。

  3. 通过键入sudo退出交互式exit会话,您可以选择提供给数据库的名称。您可能不会将您的生产数据库称为“sammy”,但是,为什么不呢?只需确保您只使用字母,数字和下划线而不使用大写字符。