mysql - 设置独立的服务器.并且指定访问范围
访问量: 1822
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