Linux下如何修改MySQL/MariaDB的Root密码

发布时间:2022-01-26 10:50:47 作者:小新
来源:亿速云 阅读:284
# Linux下如何修改MySQL/MariaDB的Root密码

## 前言

MySQL和MariaDB作为最流行的开源关系型数据库管理系统,root账户是其最高权限账户。当我们需要进行数据库维护、迁移或安全加固时,修改root密码是常见操作。本文将详细介绍在Linux环境下修改MySQL/MariaDB root密码的多种方法,并针对不同场景提供解决方案。

## 方法一:使用mysqladmin命令修改密码(已知原密码)

```bash
mysqladmin -u root -p'旧密码' password '新密码'

注意事项: 1. 单引号包裹密码可避免特殊字符被shell解释 2. 生产环境建议使用-p不带密码参数,交互式输入更安全 3. 执行后无输出表示成功,可通过mysql -u root -p测试新密码

方法二:通过MySQL Shell修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
FLUSH PRIVILEGES;

适用场景: - 已登录MySQL Shell - MySQL 5.7.6+/MariaDB 10.4+版本推荐语法

方法三:安全模式重置密码(忘记密码时)

步骤1:停止MySQL服务

sudo systemctl stop mysqld
# 或
sudo systemctl stop mariadb

步骤2:启动安全模式

sudo mysqld_safe --skip-grant-tables &

步骤3:无密码连接MySQL

mysql -u root

步骤4:执行密码更新(不同版本命令不同)

MySQL 5.7.6+ / MariaDB 10.4+:

UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';

旧版本MySQL:

UPDATE mysql.user SET Password=PASSWORD('新密码') WHERE User='root';

步骤5:刷新权限并重启服务

FLUSH PRIVILEGES;
exit;
sudo systemctl restart mysqld

方法四:使用mysql_secure_installation脚本

sudo mysql_secure_installation

该交互式脚本会引导完成: 1. 设置root密码 2. 移除匿名用户 3. 禁止远程root登录 4. 移除测试数据库 5. 重新加载权限表

密码策略建议

  1. 复杂度要求

    • 长度至少12字符
    • 包含大小写字母、数字和特殊符号
    • 避免使用字典单词
  2. 定期更换

    ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
    
  3. 密码存储: 建议使用mysql_config_editor工具安全存储凭据:

    mysql_config_editor set --login-path=local --host=localhost --user=root --password
    

常见问题解决方案

问题1:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

解决方法:

SHOW VARIABLES LIKE 'validate_password%';
# 临时降低策略强度
SET GLOBAL validate_password_policy=LOW;

问题2:修改密码后phpMyAdmin无法登录

需同步修改配置文件:

// config.inc.php
$cfg['Servers'][$i]['password'] = '新密码';

问题3:忘记密码且无法进入安全模式

可尝试在my.cnf中添加:

[mysqld]
skip-grant-tables

重启服务后按方法三操作,完成后务必移除该配置。

安全加固建议

  1. 禁用远程root登录

    DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
    
  2. 创建次级管理员

    CREATE USER 'admin'@'localhost' IDENTIFIED BY '强密码';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
    
  3. 启用审计日志

    [mysqld]
    plugin-load = audit_log.so
    audit_log_format = JSON
    audit_log_policy = ALL
    

结语

本文涵盖了从常规修改到应急处理的完整密码管理方案。建议管理员: - 定期审计数据库账户 - 使用SSH隧道替代直接远程连接 - 考虑使用证书认证替代密码认证 - 重要操作前做好数据库备份

备份提醒:执行密码修改前建议备份数据库:

> mysqldump -u root -p --all-databases > full_backup.sql
> ```

注:实际字符数约1100字(含代码块)。根据具体MySQL/MariaDB版本不同,部分命令可能需要调整,建议操作前查阅对应版本的官方文档。

推荐阅读:
  1. 如何在linux中安装php与配置Apache服务器
  2. css盒子模型是什么意思

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux mysql mariadb

上一篇:Linux系统解压.rar文件具体解决方案是什么

下一篇:@Transactional注解怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》