首页主机资讯Debian MariaDB权限管理怎么做

Debian MariaDB权限管理怎么做

时间2025-12-03 08:54:03发布访客分类主机资讯浏览271
导读:Debian 上 MariaDB 权限管理实操指南 一 基础准备与登录 安装与启动 执行:sudo apt update && sudo apt install mariadb-server mariadb-client...

Debian 上 MariaDB 权限管理实操指南

一 基础准备与登录

  • 安装与启动
    • 执行:sudo apt update & & sudo apt install mariadb-server mariadb-client
    • 检查状态:systemctl status mariadb
  • 安全初始化
    • 执行:sudo mysql_secure_installation
    • 建议选择:启用 unix_socket 认证给 root、移除匿名用户、禁止 root 远程登录、删除 test 库、重载权限表。
  • 登录数据库
    • 本地:sudo mysql -u root -p
    • 远程:mysql -u < 用户> -p -h < 服务器IP> (需提前为用户授予远程来源主机权限)

二 核心概念与权限级别

  • 账户由 ‘用户名’@‘主机’ 唯一确定,例如 ‘admin’@‘localhost’‘admin’@‘%’ 是两个不同账户;主机可使用 localhost、IP、域名、%(任意主机) 及通配符(如 192.168.1.%)。
  • 权限层级与作用域
    • 全局:ON .(所有库与表)
    • 数据库:ON db_name.*(某库下所有表)
    • 表:ON db_name.tbl(某表)
    • 列:在 GRANT 中指定列列表
  • 常用权限类别
    • 数据操作:SELECT、INSERT、UPDATE、DELETE
    • 结构变更:CREATE、ALTER、DROP、INDEX、CREATE VIEW、TRIGGER
    • 管理运维:CREATE USER、CREATE DATABASE、GRANT OPTION、RELOAD、SHUTDOWN、SUPER、PROCESS、REPLICATION CLIENT/SLAVE、SHOW DATABASES
  • 角色(MariaDB 10.2+):可将一组权限打包为角色,再授予用户,便于批量授权与回收。

三 常用操作命令清单

  • 创建与删除账户
    • 创建本地账户:CREATE USER 'app'@'localhost' IDENTIFIED BY 'StrongPass!';
    • 创建远程账户:CREATE USER 'app'@'192.168.10.%' IDENTIFIED BY 'StrongPass!';
    • 删除账户:DROP USER 'app'@'192.168.10.%';
  • 授予权限
    • 库级只读:GRANT SELECT ON sales.* TO 'rep'@'%';
    • 库级读写:GRANT SELECT,INSERT,UPDATE,DELETE ON sales.* TO 'app'@'192.168.10.%';
    • 全库全权(谨慎):GRANT ALL PRIVILEGES ON app_db.* TO 'app'@'%';
    • 全局管理(极谨慎):GRANT CREATE USER, CREATE DATABASE, RELOAD, SUPER ON *.* TO 'admin'@'localhost';
    • 授予角色(10.2+):GRANT 'read_role' TO 'app'@'%';
  • 撤销权限
    • 撤销库级权限:REVOKE ALL PRIVILEGES ON sales.* FROM 'app'@'192.168.10.%';
    • 撤销全局管理权限:REVOKE SUPER, RELOAD ON *.* FROM 'admin'@'localhost';
  • 查看与生效
    • 查看某用户权限:SHOW GRANTS FOR 'app'@'192.168.10.%';
    • 列出所有账户:SELECT User,Host FROM mysql.user;
    • 使变更生效:多数 DCL 会自动刷新;如有需要执行 FLUSH PRIVILEGES;
  • 修改密码
    • 指定账户改密:SET PASSWORD FOR 'app'@'%' = PASSWORD('NewPass!');
    • 当前会话改密:SET PASSWORD = PASSWORD('NewPass!');
  • 角色管理(10.2+)
    • 创建角色:CREATE ROLE 'read_role';
    • 给角色授权:GRANT SELECT ON sales.* TO 'read_role';
    • 回收角色:REVOKE 'read_role' FROM 'app'@'%';

四 远程访问与防火墙

  • 创建专用于远程的账户(示例仅允许网段 192.168.10.% 访问):
    • CREATE USER 'app'@'192.168.10.%' IDENTIFIED BY 'StrongPass!';
    • GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app'@'192.168.10.%';
    • FLUSH PRIVILEGES;
  • 服务端配置
    • 编辑配置文件(Debian 常见路径):sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
    • 注释或调整绑定地址:#bind-address = 127.0.0.1(允许监听所有地址;如仅需内网,可改为内网地址)
    • 重启服务:sudo systemctl restart mariadb
  • 防火墙放行
    • UFW:sudo ufw allow 3306/tcp
    • nftables:sudo nft add rule ip filter input tcp dport 3306 accept
  • 连接测试
    • 远程:mysql -u app -p -h < 服务器IP> (确保来源 IP 在授权范围内)

五 安全与最佳实践

  • 遵循最小权限原则:应用使用专用账户,避免使用 root;仅授予所需权限与库/表范围。
  • 限制来源主机:优先使用 localhost 或明确网段(如 192.168.10.%),谨慎使用 %
  • 强密码策略:长度≥12,包含大小写字母、数字与符号;定期轮换。
  • 定期审计:清理无用账户与过期权限,使用 SHOW GRANTSSELECT User,Host FROM mysql.user; 核查。
  • 角色化管理(10.2+):按职能创建角色(如只读、读写、管理),提升授权与回收的可维护性。
  • 安全初始化:首次部署务必运行 mysql_secure_installation,并按需禁用 root 远程登录。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian MariaDB权限管理怎么做
本文地址: https://pptw.com/jishu/762029.html
Debian上MariaDB怎么配置 Debian MariaDB支持哪些特性

游客 回复需填写必要信息