我是谷歌应用程序引擎的新手请帮我解决我的问题
我在导入SQL文件时在Google云sql中创建了一个实例,然后它显示我这样的错误.
ERWOR 1227(42000)第1088行:拒绝访问; 您需要(至少一个)此操作的SUPER权限
如何为我的实例添加超级权限.
我正在尝试为第二代云sql实例本地设置连接.
呼叫代理是
./cloud_sql_proxy -dir=/cloudsql -instances=status-1268:us-central1:status-dev=tcp:3306 & mysql -u status_stg --host 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
我有点不清楚如何从API部分正确设置服务帐户,所以我尝试了两个默认值,App引擎默认服务帐户和计算引擎默认服务帐户.我还创建了一个新的服务帐户.对于其中的每一个,我从管理权限部分将服务帐户ID分配为编辑者和所有者.也许还有另一种方法可以为这些帐户启用Cloud SQL Admin API?
当我的服务尝试与DB通信时从代理输出:
./cloud_sql_proxy -dir=/cloudsql -instances=status-1268:us-central1:status- dev=tcp:3306 & mysql -u status_stg --host 127.0.0.1
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
2016/04/04 11:26:58 Open socket for "status-1268:us-central1:status-dev" at "127.0.0.1:3306"
2016/04/04 11:26:58 Socket prefix: /cloudsql
2016/04/04 11:27:10 Got a connection for "status-1268:us-central1:status-dev"
2016/04/04 11:27:11 couldn't connect to "status-1268:us-central1:status-dev": googleapi: Error 403: The client is not authorized to make this request., notAuthorized
2016/04/04 11:29:08 Got a …Run Code Online (Sandbox Code Playgroud) 我工作的公司使用Google Cloud SQL来管理他们在生产中的SQL数据库.
我们遇到了性能问题,我认为查看/监控超过特定阈值(例如250ms)的所有查询是一个好主意(除其他事项外).
通过查看PostgreSQL文档,我认为这log_min_duration_statement似乎是我需要的标志.
log_min_duration_statement(整数)
如果语句运行至少指定的毫秒数,则会记录每个已完成语句的持续时间.将此值设置为零将打印所有语句持续时间.
但是从Cloud SQL文档来看,我看到只能设置一组窄的数据库标志(如每个数据库实例一样),但正如你在这里 看到的那样,log_min_duration_statement不是那些支持的标志.
所以这就是问题所在.如何使用Google Cloud SQL记录/监控慢速PostgreSQL查询?如果不可能,那么您建议我使用哪种工具/方法来获得类似的结果?
我使用app引擎创建了一个java web servlet,servlet向数据库发出请求.我已经使用本地数据库在本地测试了servlet并且它工作得很好,然后我继续在本地测试servlet但是仍然访问了Cloud SQL数据库,这也很有效.
在部署servlet之后我的问题出现了.部署完所有数据库请求后返回以下内容:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not
received any packets from the server.
Run Code Online (Sandbox Code Playgroud)
我在云控制台中查看,我的应用程序已正确添加到访问控制选项卡下的云SQL授权应用程序引擎应用程序中.
是否有人在部署的应用引擎servlet上遇到过类似的问题?那里有任何解决方案或建议吗?我将不胜感激任何帮助!
更新:
使用以下代码生成上述错误以访问db
Class.forName("com.mysql.jdbc.Driver");
Url = "jdbc:mysql://<ip-address-cloudsql>:3306/<dbname>";
Connection con = DriverManager.getConnection (Url,"root",<password>);
Run Code Online (Sandbox Code Playgroud)
使用此代码实现了同样的错误,请注意它与此处示例中显示的代码非常相似https://developers.google.com/appengine/docs/java/cloud-sql/
Class.forName("com.mysql.jdbc.GoogleDriver");
Url = "jdbc:google:mysql://<appID:instanceID>/<dbname>?
user=root&password=<password>";
Connection con = DriverManager.getConnection (Url);
Run Code Online (Sandbox Code Playgroud)
当我使用appid和实例id来设置url时,我按照此stackoverflow文章中的格式化提示显示: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
使用此代码导致以下不同的错误:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)
我假设它说localhost因为我的cloudsql数据库设置为遵循app引擎servlet.另外,要知道这两种方法在本地运行servlet和访问cloud sql数据库时都能正常工作.
有什么想法吗?我不知道还有什么可以尝试:[
就Cloud SQL和VM实例而言,我一直在关注控制台的计费.我发现很多成本来自Cloud SQL IP地址的闲置时间.我不确定设置的位置,因为我试图"取消分配"与我的Cloud SQL实例关联的IP地址.这些费用是否是静态的,就像我总是一样,无论如何,将不断收取IP地址的费用,或者当我不使用Cloud SQL实例时,有没有办法将其关闭?如果是的话,我该怎么办?
当我做一个简单的查询,比如查找所有用户时,它返回一个空数组.
$users = $em->getRepository('MyApp\\Model\\Entity\\User')->findAll();
但是,当我使用PDO手动连接到我的数据库时,它会找到数据.我正在使用ArrayCache方法,以确保它与没有文件系统的GAE无关.GAE文档说你可以使用sys_get_temp_dir(),所以我不认为这是我的代理.我不知道为什么Doctrine什么都没有返回,也没有抛出任何错误.
这是我的应用程序的引导程序文件:
<?php
$baseDir = dirname(dirname(__FILE__));
define('TIMEZONE_OFFSET', \MyApp\Library\Date::getMyTimezoneOffset());
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\AnnotationRegistry;
// globally used cache driver, in production use APC or memcached
$cache = new Doctrine\Common\Cache\ArrayCache;
// standard annotation reader
$annotationReader = new AnnotationReader;
AnnotationReader::addGlobalIgnoredName('dummy');
AnnotationRegistry::registerFile(__DIR__ . "/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php");
AnnotationRegistry::registerFile(__DIR__ . "/Gedmo/Timestampable/Mapping/Driver/Annotation.php");
AnnotationRegistry::registerAutoloadNamespace("\\MyApp\\Model\\Entity", $baseDir);
$cachedAnnotationReader = new Doctrine\Common\Annotations\CachedReader(
$annotationReader, // use reader
$cache, // and a cache driver
$debug = LOCAL
);
// create a driver chain for metadata reading
$driverChain = new Doctrine\ORM\Mapping\Driver\DriverChain(); …Run Code Online (Sandbox Code Playgroud) 我的Java应用程序需要通过SSL客户端身份验证向Google云Mysql实例进行身份验证.其客户密钥和证书由Google提供.我还需要在其证书由私有CA提供的同一应用程序上使用SSL设置JMX代理.
如果我将两个私有证书添加到启动时提供给JVM的单个密钥库中,如何防止Mysql呈现JMX证书,反之亦然
有没有其他方法可以使用Mysql验证SSL证书,然后将其放入'javax.net.ssl.keyStore'中?如果没有,是否有任何Mysql或JMX代理比其他名称更喜欢的别名?
我正在尝试postgres google-cloud-sql并加载了一个简单的学校架构
CREATE TABLE school (
id SERIAL NOT NULL PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE class (
id SERIAL NOT NULL PRIMARY KEY,
name TEXT,
school_id INTEGER NOT NULL REFERENCES school
);
CREATE TABLE student (
id SERIAL NOT NULL PRIMARY KEY,
name TEXT,
class_id INTEGER NOT NULL REFERENCES class
);
-- ALL id and foreign keys have indexs
Run Code Online (Sandbox Code Playgroud)
总共加载了约1500万行,1500所学校,每所学校500班,每班200名学生.
之后创建一个简单的pgbench脚本
\setrandom sId1 1 20000000
\setrandom sId2 1 20000000
\setrandom sId3 1 20000000
select count(*) from …Run Code Online (Sandbox Code Playgroud) 如何在不将我的凭据文件添加到容器内的情况下连接到Cloud SQL上的数据库?
google-cloud-sql ×10
java ×2
postgresql ×2
doctrine-orm ×1
jdbc ×1
jmx ×1
monitoring ×1
pdo ×1
performance ×1
php ×1
servlets ×1
sql ×1
ssl ×1