我似乎无法找到有关如何在Google CloudSQL中设置和保存MySQL配置变量的任何说明或示例。
我遇到的具体问题是默认情况下交互式会话会持续8个小时,如果我从交互式会话断开连接,线程将保持打开状态,然后更新事务阻塞,直到我终止该线程。
set global interactive_timeout=300;
五分钟后终止互动会话。
但是这个解决方案不起作用,因为我收到了错误:
错误1227(42000):拒绝访问;您需要(至少一个)此操作的SUPER权限
添加超级权限失败的方式如下:
mysql> GRANT SUPER ON *.* TO 'root'@'%' IDENTIFIED BY '<pwd>';
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
因此,似乎Cloud SQL实例的root用户没有足够的权限来设置全局变量。
另外,我无法弄清楚如何保持该设置,以便在重新启动服务器时它将保留在原位。
我看过使用:
gcloud sql instances patch
但它似乎无法修补这些设置。
任何帮助都将不胜感激。
答案 0 :(得分:3)
您现在可以在实例上设置有限数量的标记,请参阅this Google doc。
不幸的是,这不包括 interactive_timeout 标志。
原始答案
无法使用云控制台或gcloud实用程序在Cloud SQL上设置全局变量。
Cloud SQL不支持授予 SUPER 权限see the bottom of this page。
然而,在这个类似的问题Google Cloud SQL max-allowed-packet中,Google员工回答说您可以通过cloud-sql@google.com向他们发送电子邮件,其中包含项目和实例名称,他们可以为您配置这些设置,因此他们可能会能够为你设置interactive_timeout。