温馨提示×

ubuntu mysql怎么限制访问

小樊
35
2026-09-28 06:32:46
栏目: 云计算

在 Ubuntu 上限制 MySQL / MariaDB 的访问,通常可以从 网络层、MySQL 用户权限、防火墙、配置文件 几个方面来做。下面按常见场景说明。


一、限制 MySQL 监听地址(最关键)

1. 修改 MySQL 配置文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

或(MariaDB):

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

找到:

bind-address = 0.0.0.0

改为:

# 只允许本机访问
bind-address = 127.0.0.1

# 或只允许某个内网 IP
bind-address = 192.168.1.100

重启 MySQL:

sudo systemctl restart mysql

✅ 效果:外部网络无法直接连接 MySQL


二、限制 MySQL 用户访问来源(推荐)

1. 查看现有用户

SELECT user, host FROM mysql.user;

2. 创建只允许本机访问的用户

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

3. 只允许指定 IP 访问

CREATE USER 'appuser'@'192.168.1.50' IDENTIFIED BY 'password';
GRANT SELECT, INSERT ON dbname.* TO 'appuser'@'192.168.1.50';

4. 删除危险用户

DROP USER 'root'@'%';

三、使用防火墙限制端口(UFW)

MySQL 默认端口:3306

只允许本机

sudo ufw deny 3306

只允许某个 IP

sudo ufw allow from 192.168.1.50 to any port 3306

启用防火墙:

sudo ufw enable

四、禁止 root 远程登录(强烈建议)

UPDATE mysql.user SET host='localhost' WHERE user='root';
FLUSH PRIVILEGES;

或创建专用管理员用户。


五、使用 SSH 隧道访问(安全方案)

不开放 3306 端口,通过 SSH:

ssh -L 3306:127.0.0.1:3306 user@server_ip

本地连接:

127.0.0.1:3306

六、常见安全组合(推荐)

✅ 生产环境建议:

  • bind-address = 127.0.0.1
  • 不使用 root@%
  • UFW 禁止 3306
  • 使用 SSH 隧道或内网访问
  • 最小权限原则(SELECT/INSERT 而非 ALL)

如果你能说明:

  • 是 本地 / 云服务器
  • 是否要 远程访问
  • 使用 MySQL 还是 MariaDB

我可以给你一套针对你场景的具体配置。

0 踩