记录折腾的那点事
在折腾的道路上永不止步

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

一、 数据库层面设置

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

iptables -L   可以查看当前的防火墙规则

iptables -F   可以清空所有防火墙规则

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

监听地址是0.0.0.0 ,表示该mysql允许所有IP地址进行连接,这是允许远程连接的基础

监听地址是127.0.0.1,则代表该mysql只允许所在服务器本机连接,外网是无法连接的

如何知道mysql的监听地址是多少?

执行如下命令可以查看: netstat -nutlp|grep mysql

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

此步骤是必须要操作的,mysql本身的用户只能在本机上连接数据库,外网连接的话,需要先添加远程用户并授权。

在mysql命令行模式下,或者phpmyadmin中执行sql语句添加远程连接用户 grant all on *.* to root@'%' identified by '123456'; flush privileges;

或者用以下方式也可

1. 修改配置文件

sudo vim /etc/mysql/my.cnf

把bind-address参数的值改成你的内/外网IP或0.0.0.0,或者直接注释掉这行.

2. 登录数据库

mysql -u root -p

输入密码

mysql> use mysql;

3. 查询host

mysql> select user,host from user;

4. 创建host

如果没有"%"这个host值,就执行下面这两句:

mysql> update user set host='%' where user='root';

mysql> flush privileges;

5. 授权用户

任意主机以用户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;

二、 nginx层面配置

// 切换到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;  } }
赞(0)
未经允许不得转载:ghMa » Nginx转发指向数据库映射端口并对外开放访问权限
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址