温馨提示×

linux mysql怎样设置权限

小樊
35
2026-10-21 06:33:08
栏目: 云计算

在 Linux 下使用 MySQL(或 MariaDB)设置权限,通常是通过 MySQL 的用户权限系统 来完成的。下面从常用命令到实际示例给你一个清晰说明。


一、登录 MySQL

mysql -u root -p

输入 root 密码后即可进入 MySQL 命令行。


二、MySQL 权限基本概念

MySQL 权限是基于:

  • 用户(user)
  • 主机(host)
  • 数据库 / 表
  • 操作权限(SELECT、INSERT、UPDATE…)

用户格式通常是:

'用户名'@'主机'

例如:

  • 'test'@'localhost' → 只能本机连接
  • 'test'@'%' → 允许任意 IP 连接

三、创建用户并授权(最常用)

1️⃣ 创建用户

CREATE USER 'test'@'localhost' IDENTIFIED BY 'password';

允许远程连接:

CREATE USER 'test'@'%' IDENTIFIED BY 'password';

2️⃣ 授权用户

授予某个数据库的所有权限

GRANT ALL PRIVILEGES ON testdb.* TO 'test'@'localhost';

只授予查询权限

GRANT SELECT ON testdb.* TO 'test'@'localhost';

授予多个权限

GRANT SELECT, INSERT, UPDATE ON testdb.* TO 'test'@'localhost';

3️⃣ 刷新权限(重要)

FLUSH PRIVILEGES;

四、查看和撤销权限

查看用户权限

SHOW GRANTS FOR 'test'@'localhost';

撤销权限

REVOKE INSERT ON testdb.* FROM 'test'@'localhost';

删除用户

DROP USER 'test'@'localhost';

五、常见权限类型

权限 说明
SELECT 查询
INSERT 插入
UPDATE 更新
DELETE 删除
CREATE 建表/库
DROP 删表/库
ALL PRIVILEGES 所有权限

六、Linux 层面注意事项

1️⃣ 防火墙(远程连接)

# 开放 3306 端口
ufw allow 3306
# 或
firewall-cmd --add-port=3306/tcp --permanent

2️⃣ MySQL 配置文件

vim /etc/mysql/my.cnf
# 或
vim /etc/my.cnf

确保:

bind-address = 0.0.0.0

修改后重启:

systemctl restart mysqld

七、典型示例(推荐做法)

CREATE USER 'app'@'%' IDENTIFIED BY 'App@123';
GRANT SELECT, INSERT, UPDATE ON appdb.* TO 'app'@'%';
FLUSH PRIVILEGES;

如果你有具体场景(如:只允许某 IP、只读账号、Docker 环境),可以告诉我,我可以给你更精确的配置。

0 踩