首先,准备开发工具套件,我们并不会引入过多工具包,仅仅需要:
在新晃等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站设计 网站设计制作按需求定制设计,公司网站建设,企业网站建设,品牌网站制作,全网营销推广,外贸网站制作,新晃网站建设费用合理。
java8
vert.x 3
如果你是用maven做为项目管理工具,请将vert.x 3引入:
1
2
3
4
5
dependency
groupIdio.vertx/groupId
artifactIdvertx-core/artifactId
version3.3.2/version
/dependency
代码实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package
com.maxleap.mysqlproxy;
import
io.vertx.core.AbstractVerticle;
import
io.vertx.core.Vertx;
import
io.vertx.core.logging.Logger;
import
io.vertx.core.logging.LoggerFactory;
import
io.vertx.core.net.NetClient;
import
io.vertx.core.net.NetServer;
import
io.vertx.core.net.NetSocket;
/**
*
@author sneaky
*
@since 1.0.0
*/
public
class
MysqlProxyServer
{
private
static
final
Logger
logger
=
LoggerFactory.getLogger(MysqlProxyServer.class);
public
static
void
main(String[]
args)
{
Vertx.vertx().deployVerticle(new
MysqlProxyServerVerticle());
}
public
static
class
MysqlProxyServerVerticle
extends
AbstractVerticle
{
private
final
int
port
=
3306;
private
final
String
mysqlHost
=
"10.10.0.6";
@Override
public
void
start()
throws
Exception
{
NetServer
netServer
=
vertx.createNetServer();//创建代理服务器
NetClient
netClient
=
vertx.createNetClient();//创建连接mysql客户端
netServer.connectHandler(socket
-
netClient.connect(port,
mysqlHost,
result
-
{
//响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接
if
(result.succeeded())
{
//与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法
new
MysqlProxyConnection(socket,
result.result()).proxy();
nginx代理mysql,打不开表的原因及解决方法:
1、地址设置错误或端口错误导致无法正常访问MySQL。
2、检查MySQL服务器的地址和端口是否正确。
3、在Nginx配置文件中重新设置代理地址和端口,最好使用IP地址而不是主机名。
4、还需要检查MySQL服务器的安全设置,查看是否需要认证或允许特定的IP地址访问MySQL服务器。
某天有人问了我一个有关 MySQL PROXY 用户该如何使用的问题。
原问题是这样的:MySQL 版本从 5.5 升级到 8.0 后,proxy 用户怎么无法使用了?我之前是按照你博客上写的方法使用的,但是在升级后,安装插件提示如下错误:
这个咋回事?
我给了一个大家都很讨厌的答案: 去看 MySQL8.0 官方手册吧。
auth_test_plugin.so 是 MySQL 5.5 的插件,仅限于测试环境,不推荐线上使用,仅限功能演示。之后的一系列大版本安装包里都不包含这个插件,所以使用方法有些差异。
我在下面示例中使用插件 mysql_native_password ,这个插件自带 proxy 用户功能,所以需要在配置文件里开启对应的开关,并重启 MySQL 实例:(如果使用 sha256_password , 应该把参数 sha256_password_proxy_users=ON 也加到配置文件里。)
使用 proxy 用户功能之前,需要安装 mysql_no_login 插件,阻止隐藏在 proxy 用户下的真实用户登录 MySQL 。
创建一个 proxy 用户 ytt_fake ,使用认证插件 mysql_native_password :
使用 Proxy 用户登录 MySQL :
确认下变量 proxy_user 的值是不是 ytt_fake :
使用 proxy 用户登录后,查看当前登录用户信息:用户实际上是 ytt_real 。
确认下权限:具有真实用户的所有权限。
用 proxy 用户创建表、插入记录、查询、销毁表:
由于真实用户 ytt_real 使用认证插件 mysql_no_login ,MySQL 不允许此用户登录:
Mysql-Proxy是一个处于你的client端和Mysql Server端之间的一个简单程序,它可以监测、分析和改变他们的通信。它使用灵活没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。可以抽象成nginx与php-fpm的关系 本文介绍centos7.4上使用mysql-proxy
mysql-proxy 也支持读写分离/负载均衡等 可以详情可参考官方文档