如何在mysql中设置远程访问权限

来源:这里教程网 时间:2026-02-28 20:16:47 作者:

要在 MySQL 中开启远程访问权限,需要完成两个主要步骤:修改用户权限,允许从非本地连接;确保 MySQL 服务允许远程连接。以下是具体操作方法。

1. 修改 MySQL 用户权限

默认情况下,MySQL 用户通常只允许从本地(localhost)登录。要允许远程访问,需为用户设置可从其他主机连接的权限。

步骤:

登录 MySQL 服务器(使用 root 或有权限的账户):
mysql -u root -p
查看当前用户权限:
SELECT host, user FROM mysql.user;
如果用户的 host 是 localhost,则无法远程连接。
创建新用户或修改现有用户允许远程访问:
允许特定用户从任意主机连接(注意安全):
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
或修改已有用户:
UPDATE mysql.user SET host='%' WHERE user='username' AND host='localhost';
授予该用户相应权限,例如对所有数据库的访问:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
若只需访问某个数据库:
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
刷新权限使更改生效:
FLUSH PRIVILEGES;

2. 配置 MySQL 服务允许远程连接

MySQL 默认可能绑定到本地地址(127.0.0.1),阻止外部连接。需修改配置文件。

步骤:

找到 MySQL 配置文件 my.cnf 或 my.ini(Linux 通常在 /etc/mysql/my.cnf 或 /etc/my.cnf,Windows 在安装目录下)。 找到 [mysqld] 段落,修改或添加以下行:
bind-address = 0.0.0.0
这表示监听所有网络接口。若只想允许特定 IP,可设为该 IP。
确保跳过网络限制(确认无 skip-networking 选项启用)。 保存文件并重启 MySQL 服务:
Linux 示例:
sudo systemctl restart mysql

sudo service mysql restart

3. 确保防火墙和安全组放行

即使 MySQL 配置正确,系统防火墙或云服务商安全组也可能阻止 3306 端口。

开放 3306 端口(MySQL 默认端口):
使用 ufw:
sudo ufw allow 3306
使用 iptables:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
如果是云服务器(如阿里云、AWS、腾讯云),还需在控制台配置安全组规则,允许入站 TCP 3306 端口。

完成以上步骤后,即可从远程客户端使用如下命令连接:
mysql -h your_mysql_server_ip -u username -p

基本上就这些。只要用户权限、MySQL 配置、网络和防火墙都设置正确,远程访问就能成功。注意安全性,避免将 root 用户暴露给 %,建议使用专用账号并限制 IP 范围。

相关推荐