postgresql – sudo su – postgres和sudo -u postgres有什么区别?

前端之家收集整理的这篇文章主要介绍了postgresql – sudo su – postgres和sudo -u postgres有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
默认情况下,Postgresql用户在unix套接字上进行对等身份验证,其中unix用户必须与Postgresql用户相同.所以人们经常使用su或sudo成为postgres超级用户.

我经常看到人们使用如下构造:

sudo su - postgres

而不是

sudo -u postgres -i

而且我想知道为什么.同样,我见过:

sudo su - postgres -c psql

代替

sudo -u postgres psql

没有领先的sudo su版本会有一些意义,如果你在没有sudo的旧平台上.但是为什么在不太史前的UNIX或Linux上你会使用sudo su?

忘了sudo su

使用sudo su没有任何好处,这是人们习惯使用su时的一种不合时宜的习惯.当Linux发行版停止设置root密码并使sudo成为访问root帐户的唯一方法时,人们开始在前面处理sudo.他们只是使用sudo su而不是改变他们的习惯. (我是其中之一,直到最近才使用带有sudoers的盒子配置强迫我改变我的习惯).

使用sudo -u

对于登录shell,sudo -u postgres -i比sudo su – postgres更可取.它不要求用户在/ etc / sudoers中具有root访问权限,他们只需要有权成为用户postgres.它还允许您实施更好的访问控制.

用于命令执行

sudo -u postgres psql -c "SELECT 1"

优于其他选择:

sudo su - postgres -c "psql -c \"SELECT 1\""

因为你不必双重转义引号和其他shell元字符以及不需要root的其他安全优势.你可能不小心写了:

sudo su - postgres -c psql -c "SELECT 1"

有时,这将无法正常工作.

最后,通过sudo设置环境变量更容易,例如

sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster

而不是通过su. (这里,需要PATH设置,以便initdb可以找到正确的postgres可执行文件).

所以.忘记su命令存在.你不再需要它了.为了打破习惯,将其别名为会打印错误的东西. (某些init和程序包设置脚本仍然使用su,因此您无法删除它).

也可以看看:

> What’s the difference between “sudo su -” and “sudo -i”?
> What’s the magic of the “sudo su”?
> What is the difference between sudo -i and sudo su –

猜你在找的Postgre SQL相关文章