首先需要以root用户(或具有sudo权限的用户)登录MariaDB服务器。打开终端,输入以下命令:
sudo mysql -u root -p
输入密码后,进入MariaDB命令行界面(提示符为MariaDB [(none)]>)。
创建用户时,需指定用户名、主机名(决定登录来源)和密码。常见场景如下:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'StrongPassword123!';
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'StrongPassword123!';
CREATE USER 'username'@'%' IDENTIFIED BY 'StrongPassword123!';
注:
username为自定义用户名,StrongPassword123!需替换为包含大小写字母、数字和符号的复杂密码。
权限分配需遵循最小权限原则(仅授予用户完成任务所需的最小权限),常见权限类型及示例:
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'username'@'localhost';
GRANT CREATE USER, CREATE DATABASE ON *.* TO 'admin'@'localhost';
-- 创建角色并授予权限
CREATE ROLE 'read_only_role';
GRANT SELECT ON database_name.* TO 'read_only_role';
-- 将角色授予用户
GRANT 'read_only_role' TO 'report_user'@'localhost';
分配权限后,需执行以下命令使更改生效:
FLUSH PRIVILEGES;
验证用户权限是否正确分配,可使用以下命令:
SHOW GRANTS FOR 'username'@'localhost';
示例输出:+--------------------------------------------------------------+
| Grants for username@localhost |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `username`@`localhost` |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* TO `username`@`localhost` |
+--------------------------------------------------------------+
SELECT User, Host FROM mysql.user;
撤销权限时,需明确指定权限范围(如特定数据库、表),避免误操作:
SELECT权限):REVOKE SELECT ON database_name.* FROM 'username'@'localhost';
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';
撤销后需执行FLUSH PRIVILEGES;使更改生效。
删除用户前,需先撤销其所有权限(避免权限残留),再执行删除命令:
-- 撤销用户所有权限
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
-- 删除用户
DROP USER 'username'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
注:直接删除用户表中的记录不会回收权限,必须使用
DROP USER命令。
SELECT权限,避免使用ALL PRIVILEGES)。localhost,若需远程访问,明确指定IP范围(如192.168.1.%),避免使用%。若需允许远程访问,需开放MariaDB默认端口(3306):
sudo ufw allow 3306/tcp
建议仅允许可信IP访问(如公司IP),提高安全性:
sudo ufw allow from 192.168.1.100 to any port 3306