You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bookstack是否支持非本地数据库?EC2部署连RDS报错求助

解决Bookstack部署时RDS数据库1049错误

核心原因

报错SQLSTATE[HY000] [1049] Unknown database 'my-bookstack-db'的本质是:你指定的数据库在RDS实例里根本没创建,和缓存无关,属于初始部署的步骤遗漏。

分步解决

1. 验证EC2到RDS的网络连通性

先在EC2上安装MySQL客户端(按需选命令):

  • Amazon Linux/CentOS:sudo yum install mysql -y
  • Ubuntu/Debian:sudo apt install mysql-client -y

然后用客户端连接RDS,测试网络和账号有效性:

mysql -h 你的RDS端点地址 -P 3306 -u 你的RDS数据库用户名 -p

提示:如果带端口的话,用-P参数指定,比如mysql -h xxx.rds.amazonaws.com -P 3306 -u admin -p
如果连接失败,先检查RDS安全组是否开放了EC2的IP访问3306端口,以及RDS实例的「公有可访问性」是否设为「是」。

2. 在RDS中创建目标数据库

成功登录RDS后,执行SQL创建数据库:

CREATE DATABASE `my-bookstack-db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

必须用utf8mb4字符集,避免Bookstack后续出现中文乱码问题。

3. 补全Bookstack的.env数据库配置

除了DB_HOST和DB_DATABASE,你需要把.env里的数据库相关配置填全:

DB_CONNECTION=mysql
DB_PORT=3306 # 你的RDS端口,默认3306
DB_USERNAME=你的RDS数据库用户名
DB_PASSWORD=你的RDS数据库密码

填完后执行命令刷新配置,再重新迁移:

php artisan config:clear
php artisan migrate

4. 检查RDS用户权限

如果迁移仍报错,确认RDS用户拥有目标数据库的完整权限,登录RDS后执行:

GRANT ALL PRIVILEGES ON `my-bookstack-db`.* TO '你的RDS用户名'@'%';
FLUSH PRIVILEGES;

5. 额外检查

确保EC2上的PHP已安装MySQL扩展:

  • Amazon Linux/CentOS:sudo yum install php-mysqlnd -y
  • Ubuntu/Debian:sudo apt install php-mysql -y

内容的提问来源于stack exchange,提问作者Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:20:23