我在Azure上获得了MySql Server,并配置了Azure Directory Admin。
例
MySql 服务器名称:mysqlserver
和 MySql AD 管理员帐户:admin@organistionname.com.au
(此组织域帐户(
可以在用户帐户下从MySql Server查看上述帐户。
我为phpMyadmin建立了Azure Web App,并配置为指向上面的MySql db。
当使用上述活动目录管理员帐户登录phpMyAdmin时,正在根据AD进行验证,但出现错误
mysqli::real_connect(): (HY000/9013): An error occurred while validating the access token. Please acquire a new token and retry.
我需要获取一个需要传递给 MySql 服务器的广告令牌。
如何在 Azure Web App 中实现此目的?
本文档应该可以帮助您: https://learn.microsoft.com/en-gb/azure/mysql/howto-configure-sign-in-azure-ad-authentication#connecting-to-azure-database-for-mysql-using-azure-ad。
需要在代码中针对资源获取用户访问令牌:https://ossrdbms-aad.database.windows.net
或针对范围(如果使用 v2(:https://ossrdbms-aad.database.windows.net/.default
。
使用 AAD 获取访问令牌是另一个主题,确切的方式取决于你的应用。 这个答案可能会有所帮助:https://stackoverflow.com/a/33512913/1658906
我有相同的设置(除了在AKS的容器中运行的phpmyadmin(。
我相信phpmyadmin无法在启用azure广告的情况下连接到mysql(至少使用AD用户/组(,因为令牌(密码(需要以明文形式发送,并且phpmyadmin在发送之前对其进行哈希处理。
我认为这就是为什么我在验证访问令牌时出现错误的原因。请获取新令牌并重试。错误。
这也是为什么在文档中,他们在 cli 命令mysql
示例中设置了--enable-cleartext-plugin
标志。
同样在文档中,他们声明它只用myqsl cli和mysqladmin进行了测试。
出于这个原因,我目前正计划放弃 phpmyadmin for azure bastion 和运行 mysqlworkbench 的 VM。