开启mysql的远程访问权限 默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限。 主流的有两种方法,改表法和授权法。 相对而言,改表法比较容易一点,个人也是比较倾向于使用这种方法,因此,这里只贴出改表法 1、登陆mysql mysql -u root -p 2、修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个 在Linux环境下,MySQL数据库系统默认情况下只允许本地主机(localhost)进行连接,这意味着如果数据库服务器与应用程序不在同一台机器上,远程访问会被禁止。要启用远程访问权限,我们需要执行两个关键步骤:修改MySQL的用户权限设置和配置防火墙以允许3306端口的入站连接。 我们来详细解释如何通过"改表法"开启MySQL的远程访问权限: 1. **登录MySQL**: 使用以下命令以root用户身份登录MySQL: ``` mysql -u root -p ``` 输入你的MySQL root用户的密码后,你将进入MySQL的命令行界面。 2. **修改`user`表**: 在MySQL中,你需要选择`mysql`库并更新`user`表中的`host`字段。将所有允许远程访问的用户(例如,root用户)的`host`值从`localhost`更改为`%`: ``` mysql> use mysql; mysql> update user set host = '%' where user = 'root'; ``` 这样就允许任何主机通过网络连接到MySQL服务器。如果你想限制为特定IP,你可以将`%`替换为那个IP地址。 3. **验证更改**: 可以通过以下查询检查用户权限: ``` mysql> select host, user from user; ``` 确保对应的用户已经更新了`host`字段。 4. **刷新权限**: 你需要刷新MySQL的权限,使更改生效: ``` mysql> flush privileges; ``` 然后退出MySQL客户端: ``` mysql> exit; ``` 接下来,我们处理防火墙配置以允许远程连接到MySQL的3306端口: 1. **编辑防火墙配置文件**: 使用文本编辑器打开iptables配置文件,通常位于`/etc/sysconfig/iptables`: ``` vi /etc/sysconfig/iptables ``` 2. **添加新规则**: 在文件末尾(或者在`icmp-host-prohibited`规则之前)添加以下行,允许新的TCP连接到3306端口: ``` -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT ``` 这条规则表示只接受新的TCP连接请求到3306端口。 3. **保存并重启防火墙**: 保存并关闭配置文件后,重启iptables服务以应用新的规则: ``` service iptables restart ``` 防火墙配置文件的示例内容如下: ``` # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -i eth0 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -p icmp -j ACCEPT -A FORWARD -i lo -j ACCEPT -A FORWARD -i eth0 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT ``` 完成上述步骤后,你应该已经成功启用了MySQL的远程访问,并且防火墙已允许3306端口的连接。记得在生产环境中始终关注安全,限制不必要的远程访问,并定期审查和更新你的安全策略。如果你遇到问题,例如MySQL连接仍然被防火墙阻止,可以查阅相关文档或使用如`iptables-save`命令检查防火墙规则,确保3306端口开放规则已经生效。
- 粉丝: 10
- 资源: 923
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助