#mysql #node.js #ibm-cloud #ibm-cloud-functions
#mysql #node.js #ibm-cloud #ibm-cloud-функции
Вопрос:
Я хочу подключиться к своей базе данных MySQL на локальном хосте, который не находится в IBM Cloud, используя функции IBM Cloud. Я не могу этого сделать.
Я написал Node.js код в облачной функции IBM.
var mysql = require('mysql');
//,cn="server=localhost;port=3306;database=chatbot;uid=root;password=oracle1#;";
var connection = mysql.createConnection({
server: 'localhost',
user: 'root',
port:3306,
password: 'my_password'
});
function main(params) {
try {
//var connection=mysql.createConnection(cn);
connection.connect();
//var s = JSON.stringify(params['user_input']);
//var v = s.substring(1,11);
//var check= conn.querySync("select count(distinct PHONE_NUMBER) where PHONE_NUMBER='" v "'");
var rows = connection.query(
"select * from chatbot.customer_data");
//console.log(rows);
connection.end();
return{message:"TRUE:" rows[0]['PHONE']};
}
catch (e) {
return { message:"error" };
//return{message:"FALSE"};
}
}
Ожидаемый результат:
ВЕРНО: РЕЗУЛЬТИРУЮЩИЙ НАБОР
Фактический результат: ошибка
Комментарии:
1. Вы пытаетесь использовать IBM Cloud Functions для доступа к вашему локальному MySQL? Похоже ли это на то, что делается здесь, за исключением того, что ваша база данных находится не в облаке? cloud.ibm.com/docs /…
2. да, пытаюсь достичь локального Mysql через облачную функцию IBM, и эта база данных не находится в облаке. В прикрепленном документе база данных находится в самом облаке, но в моем случае база данных находится на локальном сервере, а не в облаке.
3. Добавьте подробную информацию о том, как облачный код может находить ваш локальный сервер. Это общедоступный IP-адрес и открытый порт? Используете ли вы какой-либо шлюз или VPN?
4. Указанный порт теперь закрыт. Это может быть причиной того, что не извлекаются какие-либо записи. В настоящее время я не использую ни один шлюз. Я предоставил сведения о базе данных и надеюсь, что код получит доступ к базе данных, используя эти сведения. Я не использую какой-либо шлюз или VPN. Можете ли вы подсказать мне, что еще мне нужно добавить в мой код, чтобы облачный код мог получить доступ к моей базе данных.
5. Опять же, добавьте детали, включая сообщение об ошибке.
Ответ №1:
Это чисто сетевая проблема. Облачная функция, работающая в IBM Cloud, не имеет сетевого маршрута, который ведет к вашему локальному хосту. Если вы действительно хотите такое подключение, вам нужно будет предоставить адрес вашего локального хоста, используя что-то вроде службы безопасного шлюза.
Комментарии:
1. Сейчас я использую ibm secure gateway. Я добавил клиент secure gateway, пункт назначения (локальная база данных mysql) и сервер secure gateway. Теперь вы можете подсказать мне, как я могу извлекать записи с помощью облачной функции через службу secure gateway. Пожалуйста, помогите мне с кодом или шагами, которые необходимо выполнить дальше.
2. Если вы настроили пункт назначения на шлюзе, то у вас будет сгенерированный облачный порт на сервере шлюза, который ведет к вашему локальному серверу / порту mysql. Ваша облачная функция должна использовать сервер шлюза / сгенерированный порт как часть строки подключения sql.
Ответ №2:
var sql = require('mysql');
var connection = sql.createConnection({
host: 'host name',
user: 'user name',
password: 'passwprd',
database: 'database_name'
});
function main(params) {
try {
connection.connect();
var sql="select * from table _name";
connection.query(sql,function(err,result){
return{message:result};
})
//console.log(rows);
connection.end();
}
catch (e) {
return { message:"error" };
//return{message:"FALSE"};
}
}