前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx转发指向数据库端口并对外开放访问权限

Nginx转发指向数据库端口并对外开放访问权限

作者头像
半条命专刊
发布2020-09-14 14:42:04
2.6K0
发布2020-09-14 14:42:04
举报

一、 数据库层面设置

1. 首先检查mysql所在服务器的防火墙,如果限制了外网对3306端口的连接,那么放开限制Linux服务器中执行,如下:

代码语言:javascript
复制
iptables -L   可以查看当前的防火墙规则iptables -F   可以清空所有防火墙规则

2. 确保mysql的监听地址是0.0.0.0

代码语言:javascript
复制
监听地址是0.0.0.0 ,表示该mysql允许所有IP地址进行连接,这是允许远程连接的基础监听地址是127.0.0.1,则代表该mysql只允许所在服务器本机连接,外网是无法连接的如何知道mysql的监听地址是多少?执行如下命令可以查看: netstat -nutlp|grep mysql

3. 添加远程连接mysql的账号

代码语言:javascript
复制
此步骤是必须要操作的,mysql本身的用户只能在本机上连接数据库,外网连接的话,需要先添加远程用户并授权。在mysql命令行模式下,或者phpmyadmin中执行sql语句添加远程连接用户grant all on *.* to root@'%' identified by '123456';flush privileges;

或者用以下方式也可

1. 修改配置文件

代码语言:javascript
复制
sudo vim /etc/mysql/my.cnf把bind-address参数的值改成你的内/外网IP或0.0.0.0,或者直接注释掉这行.

2. 登录数据库

代码语言:javascript
复制
mysql -u root -p输入密码mysql> use mysql;

3. 查询host

代码语言:javascript
复制
mysql> select user,host from user;

4. 创建host

代码语言:javascript
复制
如果没有"%"这个host值,就执行下面这两句:mysql> update user set host='%' where user='root';mysql> flush privileges;

5. 授权用户

代码语言:javascript
复制
任意主机以用户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;
代码语言:javascript
复制

// 切换到nginx目录
# cd /usr/local/nginx
// 执行安装ssl  stream等模块
# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream 
// make编译,此处千万注意,不要执行make install,否则将覆盖nginx文件
# make
// 备份nginx
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.20200806.bak
//将此次安装的组件copy到sbin下
# mv objs/nginx /usr/local/nginx/sbin/nginx
//切换到sbin路径
# cd sbin
//查看nginx安装的版本信息,以及安装的组件信息
# ./nginx -V
//切换到配置文件目录
# cd /usr/local/nginx/conf
//备份nginx.conf文件
# cp nginx.conf nginx.conf.20200806.bak
// 编辑
# vim nginx.conf
// 添加如下代码,跟http同级别添加
stream {
    upstream mysql_prod {
        # 数据库的ip及端口
        server 192.168.10.3:3306;
    }
    server {
        # 监听的映射端口
        listen 8002 tcp;
        proxy_responses 1;
        proxy_timeout 20s;
        proxy_pass mysql_prod;
   }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿那点儿事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档