1

根据连接器配置,所有工作人员在目录文件夹下共享相同的连接器配置,这意味着它将对任何 presto 集群用户使用相同的连接器配置。例如,来自 prestosql user1 和 user2 的查询将使用相同的 jdbc 查询配置。但是,传统的 RDBMS ACL 是基于 JDBC 配置中的用户名来支持隔离的。例如,user1 将使用jdbc:mysql://user1@host:3306,而 user2 将使用jdbc:mysql://user2@host:3306.

问题:是否有任何指针或方向来支持同一 presto 集群中的会话级连接器配置?例如,当 user1 运行查询时,它会jdbc:mysql://user1@host:3306在使用 mysql 连接器时拾取,而它可以切换到jdbc:mysql://user2@host:3306user2 运行连接到 mysql 的查询时。

我愿意接受任何设计输入,例如使用 consul 或 etcd 等集中配置管理工具。

4

3 回答 3

5

您可以为 MySQL 连接器目录属性文件配置它:

user-credential-name=mysql_user
password-credential-name=mysql_password

这允许用户提供 MySQL 用户名和密码作为额外凭据,在运行 Presto 查询时直接传递到后端 MySQL 服务器:

presto --extra-credential mysql_user=user1 --extra-credential mysql_password=secret

凭据名称mysql_usermysql_password是任意的,让您可以灵活地配置它。例如,假设您有两个 MySQL 目录指向两个不同的 MySQL 服务器。如果两台服务器共享相同的用户,那么您将使用相同的凭据名称配置两个目录,从而允许两者使用相同的凭据。如果它们不同,那么您可以将它们命名为不同的名称,例如mysql1_usermysql2_user,允许用户为每个目录提供不同的凭据。

于 2019-10-30T22:23:18.343 回答
2

如果您使用的是 Starburst Presto,那么还有一个用户模拟选项。请参阅https://docs.starburstdata.com/latest/security/impersonation.html。其中,PostgreSql 目前支持它,但 MySql 连接器尚不支持。

于 2019-10-31T05:40:36.193 回答