Rust+Axum+SurrealDB开发Todo应用时401授权错误解决咨询
1. 确认SurrealDB服务启动参数
SurrealDB的认证逻辑和启动参数直接绑定:
- 若启动时指定了
--user root --pass root,连接时必须匹配该凭证; - 若启动时未设置用户密码,连接时不能添加
--user和--pass参数,否则会触发401。
正确的带认证启动命令:
surreal start --user root --pass root --bind 0.0.0.0:8000
2. 连接命令必须指定命名空间和数据库
SurrealDB要求连接时明确指定命名空间(ns)和数据库(db),缺少这两个参数会导致认证失败。修正后的连接命令示例:
surreal sql --conn http://localhost:8000 --user root --pass root --ns todo_ns --db todo_db
如果尚未创建命名空间和数据库,可在交互模式中创建:
DEFINE NS todo_ns; DEFINE DB todo_db;
3. 排查常见匹配问题
- 检查启动端口与连接命令中的端口是否一致(确保都是8000);
- 若启动时未设置用户密码,连接命令需移除
--user和--pass:surreal sql --conn http://localhost:8000 --ns todo_ns --db todo_db
4. 完整验证流程
- 终止当前运行的SurrealDB进程;
- 执行带认证的启动命令;
- 用修正后的连接命令进入SQL交互模式;
- 执行你的表结构定义SQL:
DEFINE TABLE todo SCHEMAFULL; DEFINE FIELD title ON todo TYPE string; DEFINE FIELD content ON todo TYPE string; DEFINE FIELD completed ON todo TYPE bool; DEFINE FIELD createdAt ON todo TYPE datetime; DEFINE FIELD updatedAt ON todo TYPE datetime;
内容的提问来源于stack exchange,提问作者ispostback
相关产品推荐
相关产品推荐

