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
相关产品推荐
相关产品推荐

