我需要在GitHubActions工作流中创建一个PostgreSQL数据库,所以我想出了以下yml片段:
jobs:
build:
name: DB
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Create DB
run: |
sudo apt update --yes
sudo apt install postgresql --yes
sudo service postgresql start
sudo -u postgres createdb somedb
sudo -u postgres psql -d somedb -a -q -f db/createDBCommands.sql
sudo -u postgres psql -c "CREATE USER someDbUser WITH PASSWORD 'localDevPassword';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE somedb to someDbUser;"
以上操作正常(没有抛出错误(。但是,当我想在访问数据库的同一CI作业中运行测试时,我会得到以下错误:
28P01:用户的密码验证失败"someDbUser";
代码中使用的连接字符串为:"Server=localhost;Port=5432;Database=somedb;User Id=someDbUser;Password=localDevPassword"
。
我试着在连接字符串中的密码中添加双引号(正确地转义它们,但仍然不起作用(。
是我必须授予用户从127.0.0.1主机访问权限吗?如果是,如何使用命令而不是修改配置文件?(假设我使用CI。(
如果您不一定需要新用户,您可以更改超级用户密码并使用该用户进行连接。
- name: Create DB
run: |
sudo apt update --yes
sudo apt install postgresql --yes
sudo service postgresql start
sudo -u postgres createdb somedb
sudo -u postgres psql -d somedb -a -q -f db/createDBCommands.sql
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'localDevPassword';"
您可以使用以下连接字符串连接到它:
"Server=localhost;Port=5432;Database=somedb;User Id=postgres;Password=localDevPassword"