达梦数据库(DM)用户名大小写处理规则
达梦数据库对用户名的处理与PostgreSQL和Oracle有所不同,以下是相关说明:
一、基本规则
- 默认情况下:达梦数据库区分用户名大小写
- 创建的用户名会保留原始大小写格式
- 连接时必须使用相同的大小写形式
二、具体行为示例
1. 用户创建
-- 以下命令创建的是三个不同的用户
CREATE USER MyUser IDENTIFIED BY "Dameng123";
CREATE USER myuser IDENTIFIED BY "Dameng123";
CREATE USER MYUSER IDENTIFIED BY "Dameng123";-- 验证:
SELECT username FROM DBA_USERS WHERE username LIKE '%USER%';
/*显示:
MyUser
myuser
MYUSER
*/
2. 连接行为
disql MyUser/Dameng123@localhost:5236 # 必须大小写完全匹配
disql myuser/Dameng123@localhost:5236 # 视为不同用户
三、特殊情况处理
-
系统预设账户:如SYSDBA、SYSAUDITOR等系统角色不区分大小写
disql SYSDBA/Dameng123 # 等效于 disql sysdba/Dameng123
-
双引号使用:达梦中双引号用于保留对象名大小写,但对用户名影响不大(用户名本身就区分大小写)
四、重要注意事项
-
密码也区分大小写:
CREATE USER Analyst IDENTIFIED BY "PassWORD123"; -- 连接时必须使用完全相同的密码大小写
-
最佳实践建议:
- 统一采用大写或小写命名规范(推荐全大写)
- 避免使用仅大小写差异的用户名(如User和USER)
- 在连接字符串中严格匹配创建时的大小写
-
影响范围:
- 用户名大小写敏感性影响所有数据库操作
- 包括授权语句:
GRANT SELECT TO "MyUser"
必须大小写匹配
五、与其他数据库对比
数据库 | 用户名大小写处理 | 达梦特点 |
---|---|---|
达梦(DM) | 严格区分大小写 | 国产数据库典型设计 |
Oracle | 默认不区分,双引号强制区分 | 自动转为大写 |
PostgreSQL | 默认不区分,双引号强制区分 | 自动转为小写 |
MySQL | 取决于lower_case_table_names设置 | 可配置 |
六、问题排查
如果遇到连接问题,可检查:
-- 查看所有用户名(注意大小写)
SELECT username FROM DBA_USERS;-- 检查特定用户(需大小写精确匹配)
SELECT * FROM DBA_USERS WHERE username = 'MyUser';
七、生产环境建议
-
命名规范:
-- 推荐使用统一大写规范 CREATE USER FIN_REPORT IDENTIFIED BY "Dameng@2023";
-
应用连接配置:
# JDBC连接示例(必须大小写匹配) jdbc.url=jdbc:dm://localhost:5236?username=APP_USER&password=App@123
-
审计日志注意:
- 审计记录中的用户名会保留原始大小写
- 查询审计日志时需要精确匹配大小写
达梦数据库的这种设计增强了安全性,但需要管理员更注意命名规范的一致性。