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

本地启动Rails应用遇权限错误:Permission denied @ dir_s_mkdir - /db

问题排查与解决方案

1. 检查数据库配置路径

首先确认config/database.yml中sqlite3的数据库路径是否为相对路径。错误提示创建/db目录失败,大概率是配置里写了绝对路径(开头带斜杠),导致Rails尝试在系统根目录创建文件夹,而普通用户没有这个权限。

打开配置文件查看:

cat config/database.yml

正常的development环境配置应该类似:

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

如果路径是/db/development.sqlite3,删除开头的斜杠,改为相对路径db/development.sqlite3即可。

2. 迁移项目到WSL2原生文件系统

WSL2对Windows挂载目录(如/mnt/c/)的权限处理逻辑和WSL1不同,容易出现权限异常。如果你的项目放在Windows磁盘下,建议移到WSL2的原生目录(比如~/projects/):

mkdir -p ~/projects
cp -r /mnt/c/你的Rails项目路径 ~/projects/
cd ~/projects/你的Rails项目路径
bundle install
rails server

3. 修复项目目录权限

确保当前用户拥有项目目录的完整所有权:

sudo chown -R $USER:$USER ~/projects/你的Rails项目路径
chmod -R 755 ~/projects/你的Rails项目路径

4. 重新安装sqlite3依赖(针对新建项目也报错的情况)

如果新建Rails项目同样出现该错误,可能是sqlite3 gem的编译路径异常,尝试重新安装并指定系统sqlite3库路径:

gem uninstall sqlite3
gem install sqlite3 -- --with-sqlite3-dir=/usr/lib/x86_64-linux-gnu/
bundle install

5. 验证WSL2基础权限

执行简单的目录创建操作,确认WSL2的文件系统权限正常:

mkdir test-dir && touch test-dir/file.txt && rm -rf test-dir

如果这个操作失败,说明WSL2的用户权限配置有问题,可以尝试重置WSL2用户默认设置,或检查Windows用户目录下的.wslconfig文件是否有异常配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:20:01