2015-06-16 3 views
4

Я пытаюсь подключиться к экземпляру Cloud SQL из приложения nodejs, используя ключ файла pem.Как подключиться к экземпляру Cloud SQL с помощью nodejs и ключевого файла pem

var fs = require('fs'); 
var Sequelize = require('sequelize'); 

var sequelize = new Sequelize('database', 'root', '', { 
    host: '<ip>', 
    dialect: 'mysql', 
    ssl: { 
     ca: fs.readFileSync(__dirname + '/server-ca.pem'), 
     key: fs.readFileSync(__dirname + '/cert.pem') 
    } 
}); 
sequelize.query('select * from Users').then(function (users) { 
    console.log(users); 
}); 

У меня есть Possibly unhandled SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'<ip>' (using password: NO).

Что я делаю неправильно?

+0

К сожалению, я не могу дать ни одной из ответов на данный момент. –

ответ

1

Я только что просмотрел быстрый поиск в Google mysql access denied using password no, а сами документы MySQL говорят, что это сообщение об ошибке появляется, когда вы пытались войти в систему, не используя пароль. (CTRL + F для «вы пытались войти в систему без пароля»). Вероятно, это станет источником проблемы.

В противном случае вы следовали инструкциям из документов Cloud SQL по адресу how to connect from an external application? В частности, вы захотите убедиться, что ваш экземпляр разрешен IP или IP-адрес вашего окна. Имейте в виду, что если вы находитесь за брандмауэром, который использует NAT, корпоративный прокси, открытый прокси или любой другой частный прокси, которым владеет ваш/ваш интернет-провайдер, вам необходимо убедиться, что IP-адрес разрешен для сетевого узла , так как ваши IP-пакеты появятся оттуда. Вы можете проверить это, запустив dig +short myip.opendns.com @resolver1.opendns.com, который будет использовать внешнюю службу, чтобы рассказать вам, как выглядит ваш IP-адрес.

Возможно, вы также захотите дважды проверить документы на TLS and Cloud SQL, чтобы все, что вы сделали, хорошо в этом отношении.

2

Похоже, что ваши параметры ssl неверны. Вы поставили файл «cert» в параметре key. Ваш SSL конфигурация должна выглядеть следующим образом:

ssl: { 
    ca: fs.readFileSync(__dirname + '/server-ca.pem'), 
    cert: fs.readFileSync(__dirname + '/client-cert.pem'), 
    key: fs.readFileSync(__dirname + '/client-key.pem') 
    } 

Где клиент-key.pem является секретным ключом, соответствующий клиент-cert.pem. Вы должны получить все три этих файла, когда будете следовать за Cloud SQL SSL instructions.