Ubuntu忘记数据库密码?别慌!手把手教你重置MySQL/MariaDB与PostgreSQL密码

admin
Ubuntu忘记数据库密码?别慌!本文针对MySQL/MariaDB与PostgreSQL两大主流数据库,提供手把手重置密码指南,通过安全模式启动、修改配置文件跳过权限验证、执行重置命令等清晰步骤,助你快速找回数据库访问权限,无需专业背景也能轻松操作,有效解决登录难题,保障系统数据安全与业务连续性。

在Ubuntu服务器或开发环境中,数据库是核心组件之一,但难免会遇到“数据库密码忘记”的尴尬情况——可能是刚装完系统随手设的密码没记牢,也可能是时间久了混淆了不同数据库的密码,别担心,本文将以最常见的MySQL/MariaDBPostgreSQL为例,详细讲解如何在Ubuntu中安全重置数据库密码,助你快速恢复访问权限。

前置准备:重置密码前的注意事项

在动手操作前,请务必确认以下事项,避免不必要的麻烦:

  1. 确认数据库类型:Ubuntu中常用的数据库有MySQL、MariaDB(MySQL的分支,语法基本一致)和PostgreSQL,需先通过systemctl status mysqlsystemctl status postgresql命令确认当前运行的数据库类型。
  2. 备份重要数据:虽然重置密码一般不会影响数据,但为了极端情况下的数据安全,建议提前备份数据库(如mysqldumppg_dump命令)。
  3. 获取root权限:重置密码需要系统管理员权限,确保当前用户有sudo权限。

MySQL/MariaDB密码重置步骤(以Ubuntu 22.04为例)

MySQL和MariaDB的密码重置流程高度相似,以下以MariaDB为例(MySQL操作完全一致),步骤如下:

Ubuntu忘记数据库密码?别慌!手把手教你重置MySQL/MariaDB与PostgreSQL密码

第1步:停止数据库服务

通过systemctl命令停止正在运行的数据库服务:

sudo systemctl stop mariadb  # 若是MySQL,则用 sudo systemctl stop mysql

第2步:以安全模式启动数据库(跳过权限表)

正常启动数据库时,会加载权限表(存储用户密码等信息),此时无法直接修改密码,我们需要以“跳过权限表”的模式启动:

sudo mysqld_safe --skip-grant-tables --skip-networking &
  • --skip-grant-tables:跳过权限表验证,无需密码即可登录;
  • --skip-networking:禁止网络连接,避免其他用户无密码访问数据库(安全措施);
  • &:让服务在后台运行,避免阻塞终端。

启动后,可通过ps aux | grep mysqld确认进程是否运行。

第3步:登录数据库并修改密码

无需密码即可通过mysql命令登录数据库:

mysql -u root

登录后,依次执行以下SQL命令修改密码(以MariaDB 10.5+为例,MySQL 5.7+语法相同):

-- 1. 刷新权限(确保跳过权限表模式下也能执行后续命令)
FLUSH PRIVILEGES;
-- 2. 修改root用户密码(替换 'YourNewPassword' 为你的新密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
-- 3. 再次刷新权限,使修改生效
FLUSH PRIVILEGES;

注意

  • 若是MySQL 5.7之前版本,可使用UPDATE user SET password=PASSWORD('YourNewPassword') WHERE user='root';语法;
  • 若需要修改远程访问密码(如'root'@'%'),需同时修改该用户的密码。

第4步:重启数据库服务并测试

退出MySQL(exit;),然后停止后台的安全模式进程,并正常启动数据库服务:

sudo pkill mysqld  # 停止安全模式进程
sudo systemctl start mariadb  # 正常启动服务(MySQL用 sudo systemctl start mysql)

用新密码测试登录:

mysql -u root -p  # 输入新密码,若能成功登录则说明重置成功

PostgreSQL密码重置步骤

PostgreSQL的密码重置逻辑与MySQL不同,需通过修改配置文件允许临时“无密码登录”,步骤如下:

第1步:停止PostgreSQL服务

sudo systemctl stop postgresql

第2步:修改pg_hba.conf配置文件

PostgreSQL的“主机认证配置”文件pg_hba.conf控制用户登录权限,我们需要临时将postgres用户的认证方式改为trust(无需密码即可登录)。

  • 先找到配置文件位置(默认在/etc/postgresql/版本号/main/):
    sudo find /etc -name pg_hba.conf  # 通常输出 /etc/postgresql/14/main/pg_hba.conf(版本号可能不同)
  • 备份并编辑该文件:
    sudo cp /etc/postgresql/14/main/pg_hba.conf /etc/postgresql/14/main/pg_hba.conf.bak
    sudo nano /etc/postgresql/14/main/pg_hba.conf
  • 找到类似local all all peer的行(local表示本地连接,all表示所有数据库,all表示所有用户,peer表示通过系统用户认证),将其修改为:
    local   all             all                                     trust
  • 保存文件(Ctrl+OEnterCtrl+X)。

第3步:启动PostgreSQL并重置密码

  • 启动服务:
    sudo systemctl start postgres
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码