在阿里云数据库实例(如 RDS MySQL、PostgreSQL、SQL Server、MariaDB 等)中,添加额外的数据库(即创建新的 database/schema)通常由用户通过标准 SQL 命令完成,无需在阿里云控制台中单独“添加”。阿里云 RDS 实例本身是一个托管服务容器,创建实例后,您可以在其上创建多个数据库(逻辑隔离的库),具体操作取决于数据库类型和权限配置。
以下是通用步骤与注意事项:
✅ 前提条件:
- 已创建 RDS 实例,并处于「运行中」状态;
- 已设置白名单(确保您的客户端 IP 或 ECS 所在安全组可访问);
- 已获取高权限账号(如
root、rds_superuser或您创建的具有CREATE DATABASE权限的账号); - 已通过 DMS(数据管理服务)或客户端工具(如 MySQL Workbench、DBeaver、Navicat、psql、SSMS)连接到实例。
✅ 一、通过 SQL 创建新数据库(推荐方式)
▪️ MySQL / MariaDB(RDS MySQL)
CREATE DATABASE IF NOT EXISTS my_new_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
💡 注意:
- 默认字符集建议用
utf8mb4(支持 emoji 和完整 Unicode);- 需要当前账号拥有
CREATE权限(高权限账号默认具备);- RDS 不限制数据库数量(但单实例总数据库数建议 ≤ 500,避免性能/管理负担)。
▪️ PostgreSQL(RDS PostgreSQL)
CREATE DATABASE my_new_db
ENCODING 'UTF8'
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8';
⚠️ 注意:PostgreSQL 中
CREATE DATABASE必须在postgres或其他已有库外执行(即连接到postgres库再创建);
- 新库会自动继承模板库
template0或template1的结构(不含用户表)。
▪️ SQL Server(RDS SQL Server)
CREATE DATABASE [my_new_db]
COLLATE Chinese_PRC_CI_AS; -- 或根据需要选排序规则
✅ 支持 T-SQL 标准语法;注意库名需用方括号包裹(含特殊字符时必需)。
✅ 二、通过阿里云控制台(仅限部分场景,不推荐用于建库)
⚠️ 重要说明:
🔹 阿里云 RDS 控制台本身不提供「创建数据库」的图形化按钮(除极早期旧版可能有,现已下线)。
🔹 控制台主要功能是:管理实例、备份、监控、账号管理、网络配置等。
🔹 创建数据库必须通过 SQL 或 DMS 完成。
✅ 替代方案:使用 阿里云 DMS(Data Management Service)(推荐,免安装、Web 可视化):
- 登录 DMS 控制台;
- 左侧选择对应 RDS 实例 → 点击「登录数据库」;
- 连接成功后,在 SQL 窗口执行
CREATE DATABASE ...语句; - 执行后刷新左侧数据库列表即可看到新库。
✅ 三、为新数据库授权(关键!)
创建库后,需给业务账号赋权才能访问:
MySQL 示例:
-- 创建用户(如尚不存在)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
-- 授权该用户对新库的全部权限
GRANT ALL PRIVILEGES ON my_new_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
PostgreSQL 示例:
-- 创建角色(用户)
CREATE ROLE app_user WITH LOGIN PASSWORD 'StrongPass123!';
-- 授权(需先连接到目标库或使用 c my_new_db 切换)
c my_new_db
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO app_user;
-- (首次需对现有对象授权,后续可设 default privileges)
🔐 安全提示:生产环境建议遵循最小权限原则,避免直接
GRANT ALL,按需授予SELECT/INSERT/UPDATE/DELETE。
❌ 常见误区澄清
| 误区 | 正确理解 |
|---|---|
| “在 RDS 控制台点‘添加数据库’按钮” | ❌ 无此功能;建库必须走 SQL |
| “每个 RDS 实例只能有一个数据库” | ❌ 错误;一个实例可创建数百个逻辑数据库(受存储和性能约束) |
| “新建数据库需要重启实例” | ❌ 不需要;CREATE DATABASE 是在线 DDL 操作,秒级完成 |
✅ 补充建议
- 📦 命名规范:使用小写字母+下划线(如
order_service,user_center),避免空格/特殊字符; - 🛡️ 权限分离:为不同业务系统创建独立数据库 + 独立账号,提升安全与可维护性;
- 📊 监控容量:在 RDS 控制台 > 「监控与报警」中关注
DiskUsage和Connections,避免库过多导致元数据膨胀; - 🧩 跨库查询:MySQL 支持
db_name.table_name;PostgreSQL 需db_name.schema.table(但跨库查询需dblink或逻辑复制,原生不支持)。
如需进一步帮助,可提供:
- 您使用的 RDS 数据库类型(MySQL 8.0?PostgreSQL 14?)
- 当前连接方式(DMS / 客户端工具 / 应用代码)
- 是否遇到具体报错(如
Access denied、No database selected等)
我可以为您定制 SQL 脚本或排查权限问题 👍
是否需要我为您生成一个完整的「创建库 + 创建用户 + 授权」自动化脚本(含错误处理)?
云小栈