Cho*_*per 6 postgresql linux scripting
在我正在编写的 bash 脚本中,我需要创建一个数据库并设置一个由我的脚本自动生成的密码。
问题是我找不到在没有用户交互的情况下设置密码的方法。
我需要这样的东西:
$ createdb mydb -p $(cat password_file)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
从文档:
createdb
是 SQL 命令的包装器CREATE DATABASE
。通过此实用程序创建数据库与通过其他访问服务器的方法创建数据库之间没有实际区别。
这意味着您可以编写一个脚本来发出类似的命令
psql -f createdb.sql -v passwd=$passwd -v user=$user
Run Code Online (Sandbox Code Playgroud)
哪里createdb.sql
包含类似
CREATE ROLE :user WITH LOGIN PASSWORD :passwd;
CREATE DATABASE mydb OWNER :user;
GRANT {some privileges on the newly created database and/or its objects};
Run Code Online (Sandbox Code Playgroud)
这意味着您将为每个创建的数据库创建一个用户。
(同时,我有点怀疑你的问题是 riouj 回答的问题。)
小智 3
为了连接到您的 PostgreSQL 实例并运行createdb
作为客户端的脚本,您可以使用密码文件。该文件通常位于~/.pgpass
并且必须包含这些信息:
hostname:port:database:username:password
Run Code Online (Sandbox Code Playgroud)
如果您想为密码文件使用不同的路径,可以设置PGPASSFILE
环境变量。
出于安全考虑,您可以更改其权限:
chmod 600 ~/.pgpass
Run Code Online (Sandbox Code Playgroud)
如果您不想createdb
提示您输入任何密码,可以使用 -w 开关(或 --no-password)并使用密码文件。
您可以查看这些功能的文档:
归档时间: |
|
查看次数: |
7395 次 |
最近记录: |