Back

mysql - 设置独立的服务器.并且指定访问范围

发布时间: 2018-07-09 00:23:00

1.  apt-get install mysql-server mysql-client

2.  修改端口:  编辑 /etc/mysql/my.cnf   找到里面的port,  修改, 例如改成33060  

port = 3306

3. 找到里面对应的 bind-address, 改成 0.0.0.0   (这样允许所有ip访问)

bind-address = 127.0.0.1

4. 重启.   $ sudo service mysql restart

5. 回到VM的 WEB界面的控制台,添加 防火墙规则,  打开 33060 这个端口. (方向是 in ).  如果是google cloud, 还需要设置该防火墙对于哪些ip range 生效. 例如10.140.0.0/24   

这一步也可以单独针对mysql 所在的linux server来设置(未验证) 参考:  http://jpuyy.com/2013/07/mysql-bind-multi-address.html

在访问3306端口的主机中,只允许192.168.1.4-6,其他ip一律DROP掉

/sbin/iptables -A INPUT -p tcp -s 192.168.1.4 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 192.168.1.5 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 192.168.1.6 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
或

/sbin/iptables -A INPUT -p tcp --dport 3306 ! -s 192.168.1.4 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3306 ! -s 192.168.1.5 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3306 ! -s 192.168.1.6 -j DROP
保存防火墙规则

service iptables save

6. 进入通局域网下的另一台机器.  使用mysql连接一下.

$ mysql -u root -p --port 35888 -h 192.168.1.100 ( 这个是 mysql server ip )

会发现;  Host '192.168.0.1' is not allowed to connect to this MySQL serverConnection closed by foreign host.

这个是由于该用户并没有在mysql中 绑定ip造成的. 不用慌. 

7. 进入到mysql. 

建立数据库  和 用户: 

mysql> CREATE DATABASE IF NOT EXISTS your_db_name default charset utf8 COLLATE utf8_general_ci; 
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on your_db_name.* to 'your_db_user_name'@'10.140.0.%' identified by '$2323984ksdhfa'; 
Query OK, 0 rows affected, 1 warning (0.00 sec)

8. 就可以使用啦!

最后,推荐一个:  ip 地址计算器. http://www.ab126.com/goju/1840.html

Back