当前位置:首页>开发>正文

mysql怎么设置不允许外部连接 怎样设置才能允许外网访问MySQL

2023-12-30 15:08:50 互联网 未知 开发

 mysql怎么设置不允许外部连接 怎样设置才能允许外网访问MySQL

mysql怎么设置不允许外部连接

首先看报错窗口。

经查阅,错误原因是:本地IP(xxx.xxx.xxx.xxx)没有访问远程数据库的权限。
于是下面开启本地IP(xxx.xxx.xxx.xxx)对远程mysql数据库的访问权限。
首先远程连接进入服务器,在cms中输入mysql -u root -p,然后回车,输入密码后回车进入mysql命令行。

输入use mysql

输入select user,password,host from user
可以看到host中只有localhost主机。我们需要将xxx.xxx.xxx.xxx也添加到这里才对。

添加方法如下:
输入
grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密码"
这相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,包括远程访问权限。
然后再输入
flush privileges
这相当于是重新加载一下mysql权限,这一步必须有。

再次输入select user,password,host from user
可以看到host中已经有了新加的IP。

现在再次用Navicat for MySQl访问远程mysql数据库,已经能正常打开了。
问题解决。

不过还有一个问题,发现双击打开某张表的时候很慢,至少要3秒。
原因是:
当远程访问mysql时, mysql会解析域名, 所以会导致访问速度很慢, 会有2,3秒延时!
解决办法:
修改mysql安装目录下的my.ini,加上下面这个配置可解决此问题。在[mysqld]下加入:skip-name-resolve
保存退出后重启mysql服务。
然后访问速度就和本地一样快啦。

怎样设置才能允许外网访问MySQL

设置mysql服务允许外网访问,修改mysql的配置文件,有的是my.ini,有的是my.cnf【linux】.
1:设置mysql的配置文件
/etc/mysql/my.cnf
找到 bind-address =127.0.0.1 将其注释掉;//作用是使得不再只允许本地访问;

  重启mysql:/etc/init.d/mysql restart

2:登录mysql数据库:mysql -u root -p
  mysql> use mysql

  查询host值:
mysql> select user,host from user

如果没有"%"这个host值,就执行下面这两句:
mysql> update user set host=% where user=root
mysql> flush privileges
或者也可以执行:
mysql>grand all privileges on *.* to root@% identifies by xxxx
其中 第一个*表示数据库名;第二个*表示该数据库的表名;如果像上面那样 *.*的话表示所有到数据库下到所有表都允许访问;
‘%:表示允许访问到mysql的ip地址;当然你也可以配置为具体到ip名称;%表示所有ip均可以访问;
后面到‘xxxx为root 用户的password;

举例:

任意主机以用户root和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY mypwd WITH GRANT OPTION
mysql> flush privileges
IP为192.168.1.102的主机以用户myuser和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO myuser@192.168.1.102 IDENTIFIED BY mypwd WITH GRANT OPTION
mysql> flush privileges

如何限定特定IP访问数据库

1、创建触发器
例如CREATE OR REPLACE TRIGGER CHK_IP_LHR
AFTER LOGON ON DATABASE
DECLARE
V_IPADDR VARCHAR2(30)
V_LOGONUSER VARCHAR2(60)
BEGIN
SELECT SYS_CONTEXT(USERENV, IP_ADDRESS),
SYS_CONTEXT(USERENV, SESSION_USER)
INTO V_IPADDR, V_LOGONUSER
FROM DUAL
IF V_IPADDR LIKE (192.168.59.%) THEN
RAISE_APPLICATION_ERROR(-20001, User ||V_LOGONUSER|| is not allowed to connect from ||V_IPADDR)
END IF
END
2、或者利用sqlnet.ora
修改$OREACLE_HOME/network/admin/sqlnet.ora
tcp.validnode_checking=yes
#允许访问ip
tcp.inited_nodes=(ip1,ip2,……)
#不允许访问的ip
tcp.excluded_nodes=(ip1,ip2,……)
3、利用iptables防火墙
vi /etc/sysconfig/iptables增加
-A INPUT -s 172.16.10.1 -i eth0 -p tcp -m tcp --dport 1521 -j ACCEPT

最新文章