在 MariaDB 10 中,创建用户并授权可以通过以下步骤完成:
一、创建用户
sql
-- 创建一个本地用户(仅允许通过 localhost 登录)
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
-- 创建一个允许远程登录的用户(需替换为实际 IP 或域名)
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';
-- 允许用户从任意主机登录(谨慎使用)
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
参数说明:
username:用户名称
host:登录主机(如 localhost、IP 地址或 %)
password:用户密码(建议使用复杂密码)
二、授予权限
1. 授予基本权限
sql
-- 授予对某个数据库的所有表的 SELECT/INSERT/UPDATE/DELETE 权限
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.table_name TO 'username'@'host';
-- 授予对整个数据库的所有权限
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
2. 授予管理权限(如创建数据库/用户)
sql
-- 授予全局管理权限(谨慎使用)
GRANT CREATE USER, CREATE DATABASE ON *.* TO 'username'@'host';
3. 使用角色简化权限管理(MariaDB 10.2+ 支持)
sql
-- 创建角色并授予权限
CREATE ROLE 'read_role';
GRANT SELECT ON database_name.* TO 'read_role';
-- 将角色授予用户
GRANT 'read_role' TO 'username'@'host';
三、刷新权限
sql
FLUSH PRIVILEGES; -- 使权限生效
四、查看用户权限
sql
-- 查看用户权限
SHOW GRANTS FOR 'username'@'host';
-- 查看所有用户信息
SELECT User, Host FROM mysql.user;
五、撤销权限
sql
-- 撤销特定权限
REVOKE SELECT ON database_name.table_name FROM 'username'@'host';
-- 撤销所有权限
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
六、删除用户
sql
-- 删除用户(需先撤销其权限)
DROP USER 'username'@'host';
安全建议
密码安全:使用强密码,避免明文存储。
最小权限原则:仅授予必要的权限,避免使用 ALL PRIVILEGES。
限制远程登录:优先使用 localhost,若需远程访问,明确指定 IP 范围。
定期清理用户:移除无用账户以降低风险。