Gerçekten, gerçekten bunu yapmak istemiyorsun. Postgres bir işletim sistemi değil, bir veritabanı sunucusu. Veritabanı zamanlanmış görevlerin çalışmasını desteklese bile, veritabanını kötüye kullanmak gerçekten iyi bir fikir değildir.
Endişeniz, parola ve malzeme ayarlamak istemiyorsanız, çözülmesi kolaydır. Bir ayarlama güven veya ident kimlik doğrulaması kullanarak yerel Unix soket bağlantısı yerine, o kullanıcı olarak cronjob çalıştırın.
Kutu dışı yapılandırmasında, genellikle postgres, sistem kullanıcısını postgres
db sunucusunu çalıştırması için ayarlar ve bu sistem kullanıcısı zaten önceden yapılandırılmıştır, böylece yerel unix soketi ile bağlanırken, güven kimlik doğrulaması kullanarak yerel sunucuya bağlanabilir. Cronjob'ınızı postgres sistemi kullanıcısı olarak çalıştırabilir, yerel prize bağlanabilir ve ardından saklı yordamınızın süper kullanıcı ayrıcalığıyla çalışmasını istemiyorsanız rolünü değiştirebilirsiniz .
Varsayılan ayarlarda, sadece şunu yapabilirsiniz:
$ sudo -u postgres crontab -e
Editörde crontab girişine şöyle ekleyin:
0 0 * * * bash /path/to/run_stored_procedure.sh
ve /path/to/run_stored_procedure.sh dosyanızda mağaza prosedürlerinizi çağırmak için sadece psql kullanın.
#!/usr/bin/env bash
psql my_db_name <<END
SET ROLE limited_user;
SELECT my_stored_proc();
SELECT 1 FROM my_stored_proc();
END