Ubuntu上MariaDB的权限管理如何设置
Ubuntu上MariaDB权限管理设置指南
一、权限管理基础流程
MariaDB的权限管理遵循“用户识别→权限分配→权限生效”的核心逻辑,关键命令包括CREATE USER(创建用户)、GRANT(授予权限)、FLUSH PRIVILEGES(刷新生效)、REVOKE(撤销权限)、DROP USER(删除用户)。所有操作需通过root用户或具有GRANT OPTION权限的用户登录MariaDB执行。
二、登录MariaDB
使用root用户登录MariaDB(需输入root密码):
sudo mysql -u root -p
登录成功后进入MariaDB命令行界面(显示MariaDB [(none)]>
)。
三、用户管理
1. 创建用户
使用CREATE USER语句创建用户,格式为'用户名'@'主机名'(主机名决定用户可从哪些主机连接):
- 本地登录(仅本机):
localhost; - 远程登录(指定IP):
192.168.1.100; - 任意主机(谨慎使用):
%。
示例:
-- 创建本地用户(仅本机可登录)
CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
-- 创建远程用户(允许192.168.1.100访问)
CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'AnotherSecurePass!';
-- 创建任意主机用户(允许所有IP访问,生产环境不推荐)
CREATE USER 'global_user'@'%' IDENTIFIED BY 'CriticalPassword!';
注意:密码需包含大小写字母、数字和符号,长度≥8位。
2. 删除用户
使用DROP USER语句彻底删除用户(会自动回收其所有权限):
DROP USER 'dev_user'@'localhost';
提示:删除用户前无需手动撤销权限,DROP USER会自动处理。
3. 修改用户密码
使用ALTER USER语句修改密码(需指定新密码):
ALTER USER 'dev_user'@'localhost' IDENTIFIED BY 'NewSecurePassword456!';
建议:定期更换密码(尤其是具有高权限的用户)。
四、权限分配
1. 授予权限
使用GRANT语句为用户分配权限,格式为GRANT 权限类型 ON 数据库对象 TO '用户'@'主机':
- 特定权限(推荐):仅授予用户需要的权限(如
SELECT、INSERT);-- 授予dev_user对mydb数据库的所有表的SELECT、INSERT权限 GRANT SELECT, INSERT ON mydb.* TO 'dev_user'@'localhost'; - 所有权限(谨慎使用):授予用户对数据库/所有数据库的全部权限(如
ALL PRIVILEGES);-- 授予dev_user对mydb数据库的所有权限 GRANT ALL PRIVILEGES ON mydb.* TO 'dev_user'@'localhost'; -- 授予global_user对所有数据库的所有权限(生产环境禁用) GRANT ALL PRIVILEGES ON *.* TO 'global_user'@'%'; - 管理权限:授予用户创建数据库/用户的权限(仅root或管理员使用);
GRANT CREATE USER, CREATE DATABASE ON *.* TO 'admin_user'@'localhost'; - 角色管理(MariaDB 10.2+):通过角色简化权限分配;
-- 创建角色并授予权限 CREATE ROLE 'read_only_role'; GRANT SELECT ON mydb.* TO 'read_only_role'; -- 将角色授予用户 GRANT 'read_only_role' TO 'dev_user'@'localhost';
分配权限后,需执行FLUSH PRIVILEGES使更改立即生效(或重启MariaDB服务)。
2. 查看权限
使用SHOW GRANTS语句查看用户的权限:
-- 查看dev_user@localhost的权限
SHOW GRANTS FOR 'dev_user'@'localhost';
-- 查看所有用户的权限(需root权限)
SELECT User, Host FROM mysql.user;
输出示例:
+--------------------------------------------------------------+
| Grants for dev_user@localhost |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `dev_user`@`localhost` |
| GRANT SELECT, INSERT ON `mydb`.* TO `dev_user`@`localhost` |
+--------------------------------------------------------------+
五、权限撤销
使用REVOKE语句撤销用户的特定权限,格式为REVOKE 权限类型 ON 数据库对象 FROM '用户'@'主机':
- 撤销特定权限:
-- 撤销dev_user对mydb数据库的INSERT权限 REVOKE INSERT ON mydb.* FROM 'dev_user'@'localhost'; - 撤销所有权限:
-- 撤销dev_user对mydb数据库的所有权限 REVOKE ALL PRIVILEGES ON mydb.* FROM 'dev_user'@'localhost';
撤销后需执行FLUSH PRIVILEGES使更改生效。
六、安全最佳实践
- 最小权限原则:仅授予用户完成工作所需的最小权限(如应用用户仅需
SELECT、INSERT,无需DROP); - 限制远程访问:优先使用
localhost,若需远程访问,明确指定IP范围(如192.168.1.%); - 强密码策略:使用复杂密码(混合大小写、数字、符号),定期更换;
- 定期审计:通过
SELECT User, Host FROM mysql.user;查看所有用户,移除无用账户; - 防火墙配置:开放MariaDB端口(默认3306),但限制访问IP(如仅允许公司IP访问)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上MariaDB的权限管理如何设置
本文地址: https://pptw.com/jishu/745198.html
