Linux容器中Octopus Deploy数据库连接失败求助
解决Octopus Deploy Docker部署时SA密码不匹配的问题
针对你遇到的Error: 18456, Severity:14, State: 8(SA登录密码不匹配)问题,按以下步骤排查解决:
1. 验证数据库容器的SA密码配置
如果你的数据库是SQL Server容器(比如官方镜像),检查docker-compose.yml中db服务的环境变量:
- 确保设置的
MSSQL_SA_PASSWORD(部分旧镜像用SA_PASSWORD)值和连接字符串里的Password_01完全一致,包括大小写、特殊字符(SQL Server默认要求密码满足复杂度,你的Password_01符合要求)。 - 示例配置:
services: db: image: mcr.microsoft.com/mssql/server environment: - MSSQL_SA_PASSWORD=Password_01 - ACCEPT_EULA=Y
2. 确认Octopus容器的连接字符串是否正确加载
- 执行命令查看Octopus容器内的实际连接字符串:
docker exec <你的octopus容器名称> printenv DB_CONNECTION_STRING
- 检查输出是否和你.env文件里的
Server=db,1433;Database=OctopusDeploy;User=sa;Password=Password_01完全一致,避免.env文件未被docker-compose正确读取,或者连接字符串被截断/修改。
3. 直接验证数据库SA登录
进入数据库容器,用sqlcmd测试sa登录:
docker exec -it <你的db容器名称> /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Password_01
- 如果登录失败:说明数据库的SA密码不是
Password_01,需要删除容器和关联数据卷后,重新启动数据库容器并设置正确密码(SQL Server容器首次启动后,无法通过环境变量修改密码)。 - 如果登录成功:说明密码本身没问题,可尝试在Octopus容器内ping
db确认网络连通性(偶尔网络异常也会导致类似误报)。
4. 排查.env文件的格式问题
- 确保.env文件中
DB_CONNECTION_STRING没有多余的空格、换行,若密码包含特殊字符,需要用双引号包裹,比如:
DB_CONNECTION_STRING="Server=db,1433;Database=OctopusDeploy;User=sa;Password=Pass!@#01"
内容的提问来源于stack exchange,提问作者yuuum
相关产品推荐
相关产品推荐

