- 首页 >
- 问答 >
-
云计算 >
- Debian MariaDB如何管理用户与权限
Debian MariaDB如何管理用户与权限
小樊
38
2025-11-23 10:38:57
Debian 上 MariaDB 用户与权限管理
一 基础准备与登录
- 在 Debian 上安装后,建议先运行安全初始化:sudo mysql_secure_installation,按向导移除匿名用户、禁止远程 root 登录、删除测试库等。多数 Debian 10+ 的 MariaDB 包将 root 设置为通过 unix_socket 插件认证,便于本地维护;若需基于密码的管理员账户,建议新建专用账户而非改动 root 认证方式。完成后可用 mysql -u root -p 登录验证。
二 用户账户管理
- 账户由 ‘用户名’@‘主机’ 唯一标识,主机可使用通配符(如 % 表示任意主机,或 192.168.1.% 表示网段)。常用语句:
- 创建:CREATE USER ‘alice’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- 修改密码:SET PASSWORD FOR ‘alice’@‘localhost’ = PASSWORD(‘NewPass!’);(当前用户可用 SET PASSWORD = PASSWORD(‘…’);)
- 重命名:RENAME USER ‘alice’@‘localhost’ TO ‘alice’@‘192.168.1.10’;
- 删除:DROP USER ‘alice’@‘localhost’;
- 查看当前登录用户:SELECT USER(); 或 SELECT CURRENT_USER();
- 列出账户:SELECT User,Host FROM mysql.user;(不同版本字段名可能略有差异)
- 注意:账户主机部分必须与实际来源匹配,远程访问通常使用 ‘%’ 或具体 IP/网段。
三 权限授予与撤销
- 授权语法:GRANT 权限 ON 范围 TO ‘用户’@‘主机’ [WITH GRANT OPTION];
- 撤销语法:REVOKE 权限 ON 范围 FROM ‘用户’@‘主机’;
- 常用范围与权限级别:
- 全局:ON .(所有库与表)
- 库级:ON db1.*(某库下所有表)
- 表级:ON db1.tbl(某表)
- 常用权限:SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, REFERENCES, RELOAD, SHUTDOWN, PROCESS, FILE;需要让该账户再授权他人时加 WITH GRANT OPTION。
- 示例:
- 只读某库:GRANT SELECT ON sales.* TO ‘rep’@‘%’;
- 某库完全控制:GRANT ALL PRIVILEGES ON blog.* TO ‘blog’@‘192.168.1.%’ IDENTIFIED BY ‘BLogPass!’;
- 允许再授权:GRANT ALL ON app.* TO ‘appadmin’@‘localhost’ WITH GRANT OPTION;
- 撤销某库全部权限:REVOKE ALL PRIVILEGES ON shop.* FROM ‘bob’@‘%’;
- 查看某账户权限:SHOW GRANTS FOR ‘bob’@‘%’;
- 提示:REVOKE 的范围必须与 GRANT 的范围精确匹配,才能正确回收权限。
四 权限生效与远程访问配置
- 权限变更通常通过 GRANT/REVOKE/SET PASSWORD 自动刷新到内存;如直接修改底层权限表或遇到不一致,可执行 FLUSH PRIVILEGES; 使变更立即生效。
- 远程访问要点:
- 创建允许远程的账户(如 ‘app’@‘%’),并授予所需库/表权限。
- 在 MariaDB 配置中注释或调整 bind-address(如将 bind-address = 127.0.0.1 注释以监听所有地址),并确保防火墙放行 3306 端口。
- 出于安全,仅授予最小必要权限,避免使用 ‘%’ 授予高权限账户,生产环境建议限定为应用服务器的 固定 IP/网段。
五 安全与最佳实践
- 遵循最小权限原则:应用账户只授予目标库/表的必要权限,避免使用 GRANT ALL ON . TO … 给非管理员账户。
- 管理员账户:在 Debian 上保留 root@localhost 的 unix_socket 认证,另建基于密码的专用管理员账户(如 admin@localhost)用于脚本/外部工具。
- 定期审计:使用 SHOW GRANTS 与查询 mysql.user 检查账户与权限分配,及时清理不再使用的账户与主机。
- 忘记 root 密码的恢复思路(仅在维护窗口操作):停止服务,使用 –skip-grant-tables 启动,登录后更新密码并重启;务必在恢复后移除该启动选项并恢复常规安全配置。