一、 数据库层面设置
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目录
# 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;
}
}