By Noxxxx from https://www.noxxxx.com/?post_type=post&p=1151
欢迎分享与聚合,尊重版权,可以联系授权
由于我的 Nginx 和 Mysql 都是基于容器运行的,对于外网只暴露了 80 和 443 端口用于 web 服务,由于后续开发的网址导航功能使用 Serverless ,同时需要访问 Mysql 服务,因此打算暴露一个端口来远程调用。
Mysql 用户配置
添加一个 Mysql 新用户来授权远程访问,同时赋予该用户仅有的增删改查功能。
# 添加用户,并设置为远程可连接,同时设置密码
CREATE USER 'noxxxx'@'%' IDENTIFIED BY '12345';
含义:
- 主机名称:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
- 登录密码:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
赋予权限
GRANT SELECT, INSERT ,UPDATE, DELETE ON 数据库名.表名 TO 'noxxxx'@'%';
GRANT ALL ON *.* TO 'noxxxx'@'%';
GRANT ALL ON 数据库名.* TO 'noxxxx'@'%';
使用第三条命令即可对某个数据库下的所有表赋予全部权限。
生效权限配置
flush privileges
查看是否生效
phpmyadmin 里:
Sequel Pro 下,我们可以远程登录进入 mysql,并且只能看到被授权的数据库,增删改查功能可以使用。
Nginx 端口转发
stream {
upstream mysqlport {
hash $remote_addr consistent;
server container_name:3306 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 4430;
proxy_connect_timeout 10s;
proxy_timeout 300s;
proxy_pass mysqlport;
}
}