做的项目刚开始是本地测试,现在需要远程连接mysql、redis、kafka,现记录一下mysql、redis、kafka允许远程连接的配置。
1.mysql开启远程访问
版本:mysql Ver 14.14 Distrib 5.7.23
出于安全方面考虑 MySql-Server 只允许本机(localhost,127.0.0.1)来连接访问. 这对于 应用程序与 MySql-Server 都在同一台服务器上的网站架构来说是没有问题的。
设置Ubuntu允许远程连接MySQL的方法为:
1)用root账户登录Mysql数据库(假设密码为123456);
mysql -uroot -p123456;
2)授权用户能进行远程连接
grant all on *.* to username@'%' identified by 'password';
注意:username是用户名,password是要自己填写的一个名字,“%”表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。例如:
grant all on *.* to test@'192.168.178.138' identified by '123456';
*.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。
test:授予账号名test。
“192.168.178.138”:表示授权的用户IP为192.168.178.138,IP地址为192.168.178.138能访问MySQL数据库。
“123456”:分配账号test对应的密码为123456。
3)刷新一下权限,执行:
flush privileges;
以上两步的运行图如下
mysql> grant all on *.* to test@'192.168.178.138' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
4)重启mysql
sudo /etc/init.d/mysql restart
然后IP地址为192.168.178.138的用户就可以通过账号/密码分别为test/123456进行远程访问mysql了。
2.redis开启远程访问
版本:redis-4.0.9
redis开启远程访问的方法为:
1)修改redis-4.0.9目录下的redis.conf
将bind 127.0.0.1 改为 bind 0.0.0.0
2)配置防火墙
iptables -A INPUT -p tcp -m tcp --dport 6379 -j ACCEPT
bind字段默认为: bind 127.0.0.1,这样只能本机访问redis,需要将bind 127.0.0.1 改为 bind 0.0.0.0,有的博客写直接将bind 127.0.0.1注释掉即可,我试过了,注释掉后远端用户可以远程连接redis,但是不能访问redis里的内容。
修改成bind 0.0.0.0后,如果远端用户还是不能访问redis数据库,出现Could not connect to Redis at xx.xx.xx.xx:6379: Operation timed out的错误提示,这时需要配置防火墙(redis数据库端配置)
3.kafka开启远程访问
版本:kafka_2.11-0.11.0.0
修改kafka的config/server.properties配置文件
将下边内容
#advertised.listeners=PLAINTEXT://your.host.name:9092
修改为
advertised.listeners=PLAINTEXT://192.168.178.141:9092
其中192.168.178.141是我kafka服务器的IP地址。
参考:
https://www.jianshu.com/p/61798dbcef58
https://www.jianshu.com/p/6ec65ebadb1c
https://blog.youkuaiyun.com/caoshangpa/article/details/79901648