我正在通过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身份?除了关闭终端并打开另一个终端?
答案 0 :(得分:1)
你在几个层面上感到困惑。
消息
could not change directory to "...": Permission denied
来自PostgreSQL或createuser
和createdb
命令的不是 ,而是来自sudo
。
它告诉您,在成为操作系统用户postgres
后,它无法在当前目录中运行,因为用户postgres
没有所需的文件系统权限。
然而,处理继续(在不同的工作目录中),并且createuser
和createdb
命令成功。
createuser
和createdb
不会在当前工作目录中创建内容,而是在数据库目录中创建。
此目录属于postgres
,您可以使用
echo $PGDATA
当您是用户postgres
时。
通过键入sudo
退出交互式exit
会话,您可以选择提供给数据库的名称。您可能不会将您的生产数据库称为“sammy”,但是,为什么不呢?只需确保您只使用字母,数字和下划线而不使用大写字符。