Linux下修改/etc/passwd。ubuntu不小心改了用户名登陆不上去(忘记密码可破解密码)

博主前几天修改用户名,在/etc/passwd中找到对应文件名修改,还更改了用户家目录名,之后便无法登录系统。

  前几天手贱想修改一下用户名,然后打开/etc/passwd找到对应的文件名并修改了,而且把用户家目录都改名了,然后就上不去了。

在网上找了很多方法,现记录下亲测有效的一种方法:

 

1、重启ubuntu,随即长按shirft进入grub菜单;

2、按"e"键进入编辑页面;如下

 

3、将ro single替换为rw single init=/bin/bash; (上述的界面中将ro +后面的改为rw single init=/bin/bash)

4、按ctrl+x进入单用户模式,当前用户即为root;

5、输入passwd username(用户名)即可用修改密码

6、按ctrl+alt+del重启;

 

<think>我们正在讨论两个同层面的用户概念: 1. Linux系统用户:存储在`/etc/passwd`文件中,由操作系统管理。 2. MariaDB数据库用户:存储在MariaDB内部的系统表(如`mysql.user`)中,由数据库管理系统管理。 用户询问:使用`cat /etc/passwd`命令是否能查看MariaDB数据库创建的用户列表? 答案是否定的。原因如下: ### 原因分析 1. **存储位置同**: - Linux系统用户信息存储在`/etc/passwd`文件中(参考引用[1]的Linux用户管理机制)[^1]。 - MariaDB用户信息存储在数据库内部的`mysql.user`表中(参考引用[2]的MariaDB用户存储结构)[^2]。 2. **管理方式同**: - Linux用户通过`useradd`, `usermod`等命令管理。 - MariaDB用户通过SQL语句(如`CREATE USER`, `GRANT`)管理。 3. **权限体系隔离**: - Linux用户用于操作系统登录和文件访问控制。 - MariaDB用户仅用于数据库访问授权。 ### 验证示例 执行以下命令查看系统用户: ```bash cat /etc/passwd | grep mysql # 通常只会看到MariaDB服务运行账户(如mysql用户) ``` 输出示例: ``` mysql:x:106:113:MariaDB Server,,,:/nonexistent:/bin/false ``` 这里显示的`mysql`用户是**运行MariaDB服务的系统账户**,并非数据库内创建的应用用户(如`root@localhost`或自定义用户)。 ### 正确查看MariaDB用户的方法 通过MariaDB命令行查询(参考引用[3]的官方操作指南)[^3]: ```sql SELECT User, Host FROM mysql.user; ``` ### 特殊情况说明 如果MariaDB配置了PAM认证(如`pam_user_map`),可能将系统用户映射为数据库用户,但: 1. 映射关系存储在独立配置文件中(非`/etc/passwd`) 2. 数据库用户仍需在`mysql.user`表中有对应记录 ### 结论 - ✅ `/etc/passwd` **只能查看Linux系统用户** - ✅ MariaDB用户**必须通过数据库查询获取** §§相关问题§§ 1. 如何区分Linux系统用户和MariaDB数据库用户? 2. 为什么MariaDB需要单独的服务运行账户(如mysql用户)? 3. 如何安全地管理MariaDB数据库用户权限?</think>### 解答:`cat /etc/passwd` 能否查看 MariaDB 数据库用户? **能**。原因如下: #### 1. **用户体系隔离** - **Linux 系统用户**:存储在 `/etc/passwd` 中,用于操作系统登录和权限管理。 - **MariaDB 数据库用户**:存储在 MariaDB 内部的系统表(如 `mysql.user`)中,**与操作系统用户完全独立**。 #### 2. **验证示例** ```bash # 查看系统用户(包含所有普通用户和服务账户) cat /etc/passwd # 输出示例(会出现数据库用户): root:x:0:0:root:/root:/bin/bash mysql:x:1001:1001::/home/mysql:/bin/false # 这是MariaDB的服务账户,是数据库用户 ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash ``` #### 3. **关键区别** | 特性 | Linux 系统用户 (`/etc/passwd`) | MariaDB 数据库用户 | |---------------------|-------------------------------------|----------------------------------| | **存储位置** | 操作系统文件 | 数据库内部表 (`mysql.user`) | | **查看方式** | `cat /etc/passwd` | `SELECT User FROM mysql.user;` | | **用途** | 系统登录、文件权限 | 数据库访问控制 | | **管理命令** | `useradd`/`usermod` | SQL 语句 (`CREATE USER`/`GRANT`) | #### 4. **特殊说明** - 如果看到名为 `mysql` 的用户(如示例中的 `mysql:x:1001...`),这是 **MariaDB 服务进程的运行账户**(操作系统用户),而非数据库内创建的用户(如 `root@localhost` 或自定义用户)。 - 数据库用户需要通过 SQL 查询(如 `SELECT User, Host FROM mysql.user;`)才能获取(参考引用[1]的用户管理机制)[^1]。 --- ### 正确查看 MariaDB 用户的方法 ```sql -- 登录 MariaDB 后执行 SELECT User, Host FROM mysql.user; # 查看用户名及允许访问的主机 ``` 输出示例: ``` +------------------+-----------+ | User | Host | +------------------+-----------+ | root | localhost | | app_user | % | | replication_user | 192.168.% | +------------------+-----------+ ``` --- ### 常见问题解答 **Q:为什么数据库用户存储在 `/etc/passwd` 中?** A:出于安全性和隔离性设计: 1. 数据库用户密码使用专用哈希算法(如 `mysql_native_password`)[^2] 2. 避免操作系统用户直接访问数据库权限体系 3. 支持远程主机授权(如 `'user'@'192.168.%'`) **Q:如何关联操作系统用户和数据库用户?** A:可通过插件(如 `pam_user_map`)实现映射,但需额外配置(参考引用[3]的PAM集成文档)[^3]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值