Fast-API与MySQL Docker集成时数据库连接拒绝问题求助
问题解决步骤
1. 修改数据库连接地址
在.env文件中,将mysql_database_url的主机部分替换为docker-compose配置里MySQL服务的名称mysql——同一Docker网络内的服务可通过服务名直接访问,无需用127.0.0.1或本地IP:
mysql_database_url=mysql+pymysql://username:password@mysql/db_name
2. 补充MySQL用户配置
在docker-compose.yml的mysql服务environment字段中,添加创建指定用户和密码的环境变量,确保FastAPI使用的账号在MySQL中存在:
environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-password} - MYSQL_DATABASE=${MYSQL_DATABASE:-db_name} - MYSQL_USER=username # 替换为你实际使用的用户名 - MYSQL_PASSWORD=password # 替换为你实际使用的密码
3. (可选)确保用户权限正确
如果./mysql/db下的初始化脚本未给目标用户授权访问数据库,需在脚本中添加授权语句:
GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'%'; FLUSH PRIVILEGES;
验证操作
修改完成后,重启服务生效:
docker-compose down && docker-compose up --build
内容的提问来源于stack exchange,提问作者putta
相关产品推荐
相关产品推荐

