首页主机资讯Ubuntu MariaDB权限管理详解

Ubuntu MariaDB权限管理详解

时间2025-11-27 15:08:05发布访客分类主机资讯浏览344
导读:Ubuntu MariaDB 权限管理详解 一 核心概念与权限模型 账户由用户名@主机唯一确定,‘root’@‘localhost’与’root’@'%'是两个不同账户;主机部分可使用%、_、-等通配符进行匹配,如’app’@‘192.1...

Ubuntu MariaDB 权限管理详解

一 核心概念与权限模型

  • 账户由用户名@主机唯一确定,‘root’@‘localhost’’root’@'%'是两个不同账户;主机部分可使用%_-等通配符进行匹配,如’app’@‘192.168.1.%’
  • 权限验证分为两阶段:先验证能否连接(合法性),再按层级分配权限(全局→数据库→表→列)。
  • 权限层级与范围:
    • 全局级:ON .(如 CREATE USER、RELOAD、SHUTDOWN、SUPER 等管理权限)
    • 数据库级:ON db_name.*(如 CREATE、DROP、ALTER、SELECT、INSERT 等)
    • 表级:ON db_name.tbl(列级可在列上进一步细化)
    • 特殊权限:USAGE表示“无权限”,常用于仅允许登录;GRANT OPTION允许把自身权限授予他人。
  • 权限表与生效:账户与权限信息保存在mysql库的多张表中(如 user、db、tables_priv、columns_priv 等);执行 GRANT/REVOKE/SET PASSWORD 通常会隐式刷新内存权限,也可显式执行 FLUSH PRIVILEGES 使变更立即生效。

二 常用管理命令速查

  • 登录数据库
    • 本地:sudo mysql -u root -p
  • 账户管理
    • 创建:CREATE USER ‘u’@‘host’ IDENTIFIED BY ‘pwd’;
    • 修改密码:SET PASSWORD FOR ‘u’@‘host’ = PASSWORD(‘pwd’); (或 ALTER USER
    • 重命名:RENAME USER ‘u1’@‘h1’ TO ‘u2’@‘h2’;
    • 删除:DROP USER ‘u’@‘host’;
  • 授权与撤销
    • 授权:GRANT priv_list ON what TO ‘u’@‘host’ [WITH GRANT OPTION];
    • 撤销:REVOKE priv_list ON what FROM ‘u’@‘host’;
  • 查看与生效
    • 查看权限:SHOW GRANTS FOR ‘u’@‘host’;
    • 刷新权限:FLUSH PRIVILEGES;
  • 在线会话与进程
    • 查看会话:SHOW PROCESSLIST; (远程可用 mysqladmin -u admin -p processlist

三 典型场景与命令示例

  • 创建只读用户(本地)
    • 创建并授权:CREATE USER ‘rd’@‘localhost’ IDENTIFIED BY ‘RdPass!23’;
    • 授予权限:GRANT SELECT ON sales. TO ‘rd’@‘localhost’; *
    • 验证:SHOW GRANTS FOR ‘rd’@‘localhost’;
  • 创建应用用户(应用服务器网段)
    • 创建并授权:CREATE USER ‘app’@‘192.168.10.%’ IDENTIFIED BY ‘AppPass!45’;
    • 授予常用 DML:GRANT SELECT, INSERT, UPDATE, DELETE ON appdb. TO ‘app’@‘192.168.10.%’; *
  • 管理员账户(谨慎授予)
    • 创建并授权:CREATE USER ‘admin’@‘localhost’ IDENTIFIED BY ‘Adm!2025’;
    • 授予全局权限:GRANT ALL PRIVILEGES ON . TO ‘admin’@‘localhost’ WITH GRANT OPTION;
  • 撤销与删除
    • 撤销部分权限:REVOKE INSERT, UPDATE ON appdb. FROM ‘app’@‘192.168.10.%’; *
    • 彻底删除:DROP USER ‘app’@‘192.168.10.%’;
  • 使变更生效
    • 显式刷新:FLUSH PRIVILEGES; (多数 DCL 会自动刷新)

四 远程访问与 Ubuntu 系统配置

  • 创建远程账户:优先限定网段,如 ‘app’@‘203.0.113.%’;仅在可信网络才使用 ‘app’@‘%’
  • 配置监听与绑定地址:编辑 /etc/mysql/mariadb.conf.d/50-server.cnf,确保 bind-address 允许应用所在网段访问(如注释掉或设为 0.0.0.0 以监听所有地址,务必配合防火墙与访问控制)。
  • 防火墙放行:Ubuntu 常用 UFW,如 sudo ufw allow 3306/tcp;云主机还需在安全组放行 3306
  • 文件系统与目录权限:确保数据目录(常见为 /var/lib/mysql)属主为 mysql:mysql,如 sudo chown -R mysql:mysql /var/lib/mysql;配置文件目录(如 /etc/mysql)建议 root:root 且权限 755
  • 重启服务:sudo systemctl restart mariadb
  • 连接测试:从应用主机执行 mysql -h < DB_HOST> -P 3306 -u app -p

五 安全基线与实践建议

  • 最小权限原则:仅授予完成工作所需权限;避免对普通应用授予 FILE、PROCESS、SUPER、GRANT OPTION 等高危权限。
  • 限制登录来源:如非必要,禁止 root@‘%’;为应用创建专用户并限定 host
  • 清理默认与匿名对象:安装后移除匿名用户、删除或限制对test库的访问。
  • 导入导出安全:
    • 建议禁用或限制 local_infileSHOW VARIABLES LIKE ‘local_infile’; 如需禁用,在配置中设 local_infile=0 并重启。
    • 设置 secure_file_priv 为固定目录(如 /var/lib/mysql-files),避免任意路径读写:SHOW VARIABLES LIKE ‘secure_file_priv’;
  • 系统级加固:
    • 数据目录权限建议 700chmod 700 /var/lib/mysql
    • 清理或重定向 ~/.mysql_history 以降低凭据泄露风险。
  • 定期审计:
    • 核查高权限账户:SELECT user,host FROM mysql.user WHERE file_priv=‘Y’ OR process_priv=‘Y’ OR super_priv=‘Y’;
    • 核查对 mysql 系统库有写权限的账户;核查异常来源主机与账户。
  • 密码策略:启用并定期评估 validate_password 插件策略(如长度、复杂度)。

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


若转载请注明出处: Ubuntu MariaDB权限管理详解
本文地址: https://pptw.com/jishu/757930.html
Ubuntu MariaDB常见问题及解答 Kubernetes集群Ubuntu节点如何配置

游客 回复需填写必要信息