在Ubuntu系统上管理MariaDB权限前,需完成以下基础配置:
sudo apt update && sudo apt install mariadb-server mariadb-client命令安装MariaDB服务端及客户端。sudo systemctl start mariadb启动服务,并通过sudo systemctl enable mariadb设置开机自启。sudo mysql_secure_installation,完成root密码设置、删除匿名用户、禁止root远程登录等安全配置。使用root用户(或具有sudo权限的用户)登录MariaDB控制台:
sudo mysql -u root -p
输入密码后进入MariaDB命令行界面(提示符为MariaDB [(none)]>)。
创建用户时需指定用户名、主机限制(决定登录来源)和密码:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'StrongPassword123!';
192.168.1.100):CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'StrongPassword123!';
CREATE USER 'username'@'%' IDENTIFIED BY 'StrongPassword123!';
注意:
localhost表示本机,%表示任意主机;密码需使用大小写字母、数字、符号组合,避免弱密码。
根据用户需求分配不同级别的权限,常见场景如下:
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
GRANT SELECT, INSERT ON database_name.* TO 'username'@'host';
GRANT SELECT ON *.* TO 'username'@'host';
GRANT CREATE USER, CREATE DATABASE ON *.* TO 'username'@'host';
CREATE ROLE 'read_only_role';
GRANT SELECT ON database_name.* TO 'read_only_role';
GRANT 'read_only_role' TO 'username'@'host';
分配权限后,需执行FLUSH PRIVILEGES;使更改立即生效。
SELECT USER();
SELECT DISTINCT User, Host FROM mysql.user;
SHOW GRANTS FOR 'username'@'host';
示例:查看john@localhost的权限:SHOW GRANTS FOR 'john'@'localhost';
db1数据库的SELECT权限):REVOKE SELECT ON db1.* FROM 'username'@'host';
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
撤销后需执行FLUSH PRIVILEGES;使更改生效。
删除用户前需先撤销其所有权限,再执行删除命令:
DROP USER 'username'@'host';
示例:删除john@localhost用户:
DROP USER 'john'@'localhost';
SELECT、INSERT权限,避免使用ALL PRIVILEGES)。host设置为具体IP(如192.168.1.100),而非%;并确保Ubuntu防火墙开放3306端口(sudo ufw allow 3306/tcp)。sudo mysql_secure_installation已默认禁用)。