Linux数据库登录时,默认的用户名是啥?
- 内容介绍
- 文章标签
- 相关推荐
数据库的登录账号往往与程序使用者有着密切关系。很多新人在安装完操作程序或数据库后发现自己不知道该用哪个账号去登录数据库,或者被迫使用程序的超级使用者而导致安全隐患。
1. 程序级别的根使用者
Linux 的根使用者是root大小写敏感。安装过程中你会被要求设置一个密码,这个密码即为 root 的登录凭证。root 拥有对整个程序的最高权限,但也正因为此。直接使用 root 进行数据库管理会让安全风险大幅上升。
痛点:初次安装时没有明确提示“不要直接用 root 登录数据库”,导致很多人误以为可以直接用 root 访问 MySQL、PostgreSQL 等。
2. 安装 Linux 时设置的普通使用者
在如 Fedora、Ubuntu 等发行版首次启动后会提示你创建一个普通使用者。这个账号通常用于日常操作,并可通过 sudo 获得管理员权限。建议把数据库管理员账号与此普通账号分离,以减少误操作。
痛点:许多人认为只要有 sudo 权限就能安全管理数据库,却忽略了 sudo 与 dbadmin 权限不等价。
3. 常见数据库的默认登录使用者名
-
MySQL / MariaDB: 默认登录名是
root;密码为空或由安装程序自行生成。不过,注意:如果你使用的是官方 Docker 镜像。请务必在启动容器时通过环境变量设置强密码,否则任何人都能以 root 身份访问。 -
PostgreSQL: 默认超级使用者为
postgres;在首次启动时会要求你为其设置密码或使用 peer/ident 认证方式。本地连接可以免密码,但网络连接需严格限制。 -
Oracle: 默认管理员账号包括
SYS,SYSTEM;这两个账号都拥有极高权限,建议在部署前更改其密码并限制网络访问。 -
Mysqlbingo / MongoDB: MongoDB 默认管理员账户是
"admin". 如果未开启身份验证,任何人都能通过 localhost 接口创建 admin 账户并获得完整权限。 - NoSQL:Redis、Cassandra 等: 通常不预设登录使用者名,只提供密码或 ACL 机制;若未配置,则所有客户端均可访问。
4. 如何避免“默认账户”带来的风险?
* MySQL: 运行 mysql -u root -p &> ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassword!',FLUSH PRIVILEGES;
* PostgreSQL: 在 postgres 使用者下执行 ALTER USER postgres WITH PASSWORD 'StrongPassword!',
* Oracle: 用 SYSDBA 登录后执行 ALTER USER SYS IDENTIFIED BY "StrongPassword!",ALTER USER SYSTEM IDENTIFIED BY "StrongPassword!",其实,
* MongoDB: 使用 mongo shell 创建新 admin 并禁用旧 admin.
* Redis: 在 redis.conf 中配置 requirepass.
- 为业务应用创建专门的 DB 使用者。只授予必要表级别权限,不要使用 root/postgres/SYS/ADMIN 直接操作业务数据。
- 对外部暴露的服务只允许特定 IP 或 VPC 内部访问,而非开放到公网。
#3 审计与监控:
- 开启审计日志,记录谁何时以何种方式登陆过;对于 PostgreSQL 可开启 pgaudit;说起来,MySQL 可启用 general_log 或 audit_plugin;其实,MongoDB 有 audit events;Redis 可配置 redis-cli 命令日志.
#4 定期更换与泄露检查:
5. 小结:快速定位和解决 “缺失/错误默认账号” 问题的方法图谱
- ① 检查 /etc/passwd 和 /etc/group: .
② 查看当前 DB 服务状态:
systemctl status mysql
systemctl status postgresql
systemctl status mongod
systemctl status redis.service
.
③ 确认已开启身份验证:
sudo grep -i auth /etc/mysql/my.cnf
sudo grep -i auth /etc/postgresql/*/main/pg_hba.conf
sudo grep -i keyFile /etc/mongod.conf # for TLS key path check
.
④ 创建新 DB 管理员并撤销旧超级使用者:
CREATE USER 'appadmin'@'localhost' IDENTIFIED BY 'NewP@ssw0rd!',GRANT ALL PRIVILEGES ON appdb.* TO 'app_admin'@'localhost';REVOKE ALL PRIVILEGES ON . FROM 'root';FLUSH PRIVILEGES;
CREATE ROLE appadmin LOGIN PASSWORD 'NewP@ssw0rd!',GRANT ALL PRIVILEGES ON DATABASE appdb TO appadmin;REVOKE CONNECT ON DATABASE appdb FROM PUBLIC;.
⑤ 配置防火墙和安全组: Linux 防火墙常用方法 .
数据库的登录账号往往与程序使用者有着密切关系。很多新人在安装完操作程序或数据库后发现自己不知道该用哪个账号去登录数据库,或者被迫使用程序的超级使用者而导致安全隐患。
1. 程序级别的根使用者
Linux 的根使用者是root大小写敏感。安装过程中你会被要求设置一个密码,这个密码即为 root 的登录凭证。root 拥有对整个程序的最高权限,但也正因为此。直接使用 root 进行数据库管理会让安全风险大幅上升。
痛点:初次安装时没有明确提示“不要直接用 root 登录数据库”,导致很多人误以为可以直接用 root 访问 MySQL、PostgreSQL 等。
2. 安装 Linux 时设置的普通使用者
在如 Fedora、Ubuntu 等发行版首次启动后会提示你创建一个普通使用者。这个账号通常用于日常操作,并可通过 sudo 获得管理员权限。建议把数据库管理员账号与此普通账号分离,以减少误操作。
痛点:许多人认为只要有 sudo 权限就能安全管理数据库,却忽略了 sudo 与 dbadmin 权限不等价。
3. 常见数据库的默认登录使用者名
-
MySQL / MariaDB: 默认登录名是
root;密码为空或由安装程序自行生成。不过,注意:如果你使用的是官方 Docker 镜像。请务必在启动容器时通过环境变量设置强密码,否则任何人都能以 root 身份访问。 -
PostgreSQL: 默认超级使用者为
postgres;在首次启动时会要求你为其设置密码或使用 peer/ident 认证方式。本地连接可以免密码,但网络连接需严格限制。 -
Oracle: 默认管理员账号包括
SYS,SYSTEM;这两个账号都拥有极高权限,建议在部署前更改其密码并限制网络访问。 -
Mysqlbingo / MongoDB: MongoDB 默认管理员账户是
"admin". 如果未开启身份验证,任何人都能通过 localhost 接口创建 admin 账户并获得完整权限。 - NoSQL:Redis、Cassandra 等: 通常不预设登录使用者名,只提供密码或 ACL 机制;若未配置,则所有客户端均可访问。
4. 如何避免“默认账户”带来的风险?
* MySQL: 运行 mysql -u root -p &> ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassword!',FLUSH PRIVILEGES;
* PostgreSQL: 在 postgres 使用者下执行 ALTER USER postgres WITH PASSWORD 'StrongPassword!',
* Oracle: 用 SYSDBA 登录后执行 ALTER USER SYS IDENTIFIED BY "StrongPassword!",ALTER USER SYSTEM IDENTIFIED BY "StrongPassword!",其实,
* MongoDB: 使用 mongo shell 创建新 admin 并禁用旧 admin.
* Redis: 在 redis.conf 中配置 requirepass.
- 为业务应用创建专门的 DB 使用者。只授予必要表级别权限,不要使用 root/postgres/SYS/ADMIN 直接操作业务数据。
- 对外部暴露的服务只允许特定 IP 或 VPC 内部访问,而非开放到公网。
#3 审计与监控:
- 开启审计日志,记录谁何时以何种方式登陆过;对于 PostgreSQL 可开启 pgaudit;说起来,MySQL 可启用 general_log 或 audit_plugin;其实,MongoDB 有 audit events;Redis 可配置 redis-cli 命令日志.
#4 定期更换与泄露检查:
5. 小结:快速定位和解决 “缺失/错误默认账号” 问题的方法图谱
- ① 检查 /etc/passwd 和 /etc/group: .
② 查看当前 DB 服务状态:
systemctl status mysql
systemctl status postgresql
systemctl status mongod
systemctl status redis.service
.
③ 确认已开启身份验证:
sudo grep -i auth /etc/mysql/my.cnf
sudo grep -i auth /etc/postgresql/*/main/pg_hba.conf
sudo grep -i keyFile /etc/mongod.conf # for TLS key path check
.
④ 创建新 DB 管理员并撤销旧超级使用者:
CREATE USER 'appadmin'@'localhost' IDENTIFIED BY 'NewP@ssw0rd!',GRANT ALL PRIVILEGES ON appdb.* TO 'app_admin'@'localhost';REVOKE ALL PRIVILEGES ON . FROM 'root';FLUSH PRIVILEGES;
CREATE ROLE appadmin LOGIN PASSWORD 'NewP@ssw0rd!',GRANT ALL PRIVILEGES ON DATABASE appdb TO appadmin;REVOKE CONNECT ON DATABASE appdb FROM PUBLIC;.
⑤ 配置防火墙和安全组: Linux 防火墙常用方法 .

