[linux] MySQL开启远程访问权限及防火墙开放3306端
在Linux中装上mysql之后,发现windows中用navicat连接数据库失败,这是由于默认mysql的用户是没有远程访问的权限的,因此当navicat程序跟mysql数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限才能正常访问mysql数据库。
1、登陆mysql
mysql -u root -p
2、root 用户授权
grant all privileges on *.* to root@'%' identified by 'rootpasswd ' with grant option;
// 这段指令允许所有用root用户输入密码登陆该mysql server,
// 如果将'%' 换成'192.168.1.124' ,那么只有'192.168.1.124'的主机可以登陆。
// rootpasswd : 登录密码
FLUSH PRIVILEGES;
防火墙开放3306端口 - Centos6
1、打开防火墙配置文件
vi /etc/sysconfig/iptables
2、增加下面一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
3、更改后的防火墙配置文件
# 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 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
4、保存后重启防火墙
service iptables restart
注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前,否则将仍不能进行访问。
防火墙开放3306端口 - Centos7
一、firewalld 防火墙
语法命令如下:启用区域端口和协议组合
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
此举将启用端口和协议的组合。
端口可以是一个单独的端口 <port> 或者是一个端口范围 <port>-<port>。
协议可以是 tcp 或 udp。
查看 firewalld 状态
systemctl status firewalld
开启 firewalld
systemctl start firewalld
开放端口
// --permanent 永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=3306/tcp
删除
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
二、iptables 防火墙
也可以还原传统的管理方式使用 iptables
关闭firewalld防火墙
// 停止firewalld服务
systemctl stop firewalld
// 屏蔽服务让他不能自启
systemctl mask firewalld
安装iptables
yum install iptables-services
设置开机启动
systemctl enable iptables
操作命令
// 关闭服务
systemctl stop iptables
// 启动服务
systemctl start iptables
// 重启服务
systemctl restart iptables
// 显示服务状态
systemctl status iptables
在启动的时候会遇到这样的问题:Unit iptables.service failed to load
问题根源是在/etc/sysconfig/下面没有找到iptables文件。解决办法如下:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
/usr/libexec/iptables/iptables.init save #保存成功
然后再执行
systemctl start iptables