Подключение из IBM Cloud Functions к MySQL на локальном хосте

#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"}; 
 }
}