Google app engine 只允许Google App Engine应用程序访问一个云SQL实例数据库

Google app engine 只允许Google App Engine应用程序访问一个云SQL实例数据库,google-app-engine,google-cloud-sql,Google App Engine,Google Cloud Sql,我有几个小的Google应用程序引擎应用程序正在访问同一个云SQL实例(以节省资源),我不想限制每个应用程序访问这些单独的数据库;例如 1. CoolApp5 ---> global_db_instance -> coolapp5_db 2. EatFood ----> global_db_instance -> eatfood_db 3. WebsiteCo --> global_db_instance -> websiteco_db 当前系统似乎允许应

我有几个小的Google应用程序引擎应用程序正在访问同一个云SQL实例(以节省资源),我不想限制每个应用程序访问这些单独的数据库;例如

1. CoolApp5 ---> global_db_instance -> coolapp5_db
2. EatFood ----> global_db_instance -> eatfood_db
3. WebsiteCo --> global_db_instance -> websiteco_db

当前系统似乎允许应用程序访问全局实例数据库,但会造成安全漏洞。如果入侵者通过一个应用程序(coolapp5/eatfood或websiteco)访问数据库,他将访问所有数据库

例如CoolApp5的Wordpress网站

<?php // wp-config.php 
    define('DB_HOST', ':/cloudsql/global_db_instance:db'); //
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    define('DB_NAME', 'coolapp5_db');
?>

如您所见,应用程序
coolapp5
可以访问
coolapp5_db
,并且可以访问其他数据库(
eatfood_db,websiteco_db
),因为应用程序具有根访问权限

一个显而易见的解决方案可能是为每个应用程序提供多个单独的实例,但这对于小型应用程序来说是低效的,因为一个云SQL数据库可以同时运行多个网站


是否有其他解决方案,或者我的策略根本不适用于Google Cloud SQL?

在您的单个Cloud SQL实例中为每个数据库/应用程序()设置MySQL用户,并将这些新用户的访问权限授予他们所需的数据库。

您能稍微详细说明一下吗?我没有IPv4地址来更改mysql,我可以临时启用此功能,添加用户并禁用它,还是我的应用现在需要将IPv4与新用户帐户连接起来,才能访问mysql实例?您的主机名不需要更改,您只需创建用户
创建由“some_pass”标识的用户“app1_USER”@“localhost”
并仅授予该用户对其数据库的访问权限
使用grant选项将app1_db.*上的所有权限授予“app1_user”@“%”->