外观
3.2 账号与权限设置
约 519 字
数据库权限
本页对应「三、操作步骤」的 3.2,完成账号与权限设置。返回上级:数据库安装与基础配置文档。
前置条件
- 3.1 已完成,root 可通过
/etc/axis/db.cnf免交互登录。 - 已确定库名 axis、应用账号名 axis_app 与来源网段。
- 已确认应用所需的最小权限集合,不含 DDL 与授权权限。
操作步骤
- 创建业务库并指定字符集与排序规则。
sudo mariadb -e "CREATE DATABASE axis CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sudo mariadb -e "SHOW CREATE DATABASE axis;"- 创建应用账号,仅允许本机回环与内网网段。
sudo mariadb -e "CREATE USER 'axis_app'@'127.0.0.1' IDENTIFIED BY 'CHANGE_ME';"
sudo mariadb -e "CREATE USER 'axis_app'@'10.0.0.%' IDENTIFIED BY 'CHANGE_ME';"- 只授予业务所需的 DML 权限,不包含 DROP、ALTER、GRANT。
sudo mariadb -e "GRANT SELECT, INSERT, UPDATE, DELETE ON axis.* TO 'axis_app'@'127.0.0.1';"
sudo mariadb -e "GRANT SELECT, INSERT, UPDATE, DELETE ON axis.* TO 'axis_app'@'10.0.0.%';"
sudo mariadb -e "FLUSH PRIVILEGES;"- 另建只读账号,供报表与排查使用。
sudo mariadb -e "CREATE USER 'axis_ro'@'127.0.0.1' IDENTIFIED BY 'CHANGE_ME';"
sudo mariadb -e "GRANT SELECT ON axis.* TO 'axis_ro'@'127.0.0.1';"- 核对授权结果与账号来源限制。
sudo mariadb -e "SHOW GRANTS FOR 'axis_app'@'127.0.0.1';"
sudo mariadb -e "SHOW GRANTS FOR 'axis_ro'@'127.0.0.1';"
sudo mariadb -e "SELECT user, host FROM mysql.user ORDER BY user;"结果确认
SHOW GRANTS输出仅包含 axis 库的 DML 权限,无ALL PRIVILEGES、无WITH GRANT OPTION。- 只读账号仅有 SELECT,执行 INSERT 时返回 Access denied。
mysql.user中账号 host 与规划一致,密码以哈希形式存储。- 用应用账号执行
SELECT 1成功,执行DROP TABLE被拒绝。
注意事项
- 同一账号名对应不同 host 是两个独立账号,删除时需分别执行
DROP USER 'x'@'host';。 - 迁移或换机后应用来源 IP 会变,需提前补充 host 规则,否则报 Access denied。
- 不要把 GRANT 权限授予应用账号,授权操作统一由 root 执行。
- 密码变更后同步更新应用配置并重启应用,避免连接池持有旧凭据。