我经常需要删除 postres 数据库并重新创建它。必须以postgres
用户身份按如下方式完成:
$ sudo -u postres dropdb my_database
我想添加sudoers 规则无需输入密码。通常我会创建一个文件,并设置/etc/sudoers.d/
如下规则:
Cmnd_Alias DROP_DB = /bin/bash -l -c dropdb*, /usr/bin/dropdb*
emilio ALL = NOPASSWD: DROP_DB
但在这个用例中,我需要运行以下命令PostgreSQL 的用户,它不起作用。
以不同用户身份运行命令而不被要求输入密码的正确方法是什么?
编辑:这可能是重复的,但它带来了不同的解决方案,visudo
很有趣。
答案1
裹删除数据库和创建数据库在类似这样的 bash 脚本中/usr/bin/recreatedb.sh
:
#!/bin/bash
sudo -u postgres dropdb $2
sudo -u postgres createdb -O $1 $2
然后创建一个特殊的sudoers规则使用维苏多:
$ sudo visudo -f /etc/sudoers.d/postgresql
根据此规则:
Cmnd_Alias RECREATE_DB = /bin/bash -l -c recreatedb*, /usr/bin/recreatedb*
username ALL = NOPASSWD: RECREATE_DB