Google Cloud - подключите Sql-сервер к Google Apps Script

У меня проблемы с подключением sql-сервера в облаке Google к скрипту приложений Google, я пробовал использовать множество вариантов для подключения по URL-адресу, например: Jdbc.getCloudSqlConnection ("jdbc: google: mysql: // apis-para-pap: южная америка-восток1: revistamarcasserver "," sqlserver "," ***** "); но не подключается, исключение: не удалось установить соединение с базой данных. Проверить строку подключения. Вы можете помочь мне решить эту проблему, чтобы подключить Sql Server к Google Apps Script?

Информация о Google Cloud Sql Server:

  • Тип БД: SQL Server 2017 Standard
  • Расположение: southamerica-east1-b
  • Имя экземпляра: apis-para-pap: southamerica-east1: revistamarcasserver
  • Государственный адрес: 34.95.157.142
  • Белый список: (72.14.192.0/18) (64.233.160.0/19) (209.85.128.0/17) (66.102.0.0/20) (74.125.0.0/16) (173.194.0.0/16) (66.249.80.0/ 20) (64.18.0.0/20) (216.239.32.0/19) (207.126.144.0/20)

(наблюдение: используя студию управления сервером sql, я успешно протестировал и подключился с этой информацией).

Большое вам спасибо


person Martentes Adm    schedule 01.12.2019    source источник
comment
Вы передаете учетные данные пользователя для доступа к базе данных? Как в Jdbc.getCloudSqlConnection (connectionString, имя пользователя, пароль). Убедитесь, что вы не используете пользователя root и пароль для доступа к базе данных. Создайте специального пользователя в консоли Google Cloud. Проверьте строку подключения для вашего экземпляра mysql. Добавьте '/ mydatabasename' к строке подключения. Кроме того, отсутствие подключения может означать тысячу разных вещей. Пожалуйста, публикуйте все сообщения об ошибках и свой код (без личной информации).   -  person Anton Dementiev    schedule 02.12.2019
comment
Здравствуйте, спасибо за помощь Антон Дементьев, это очень важно для меня. Да, в качестве примера я помещаю учетные данные: Jdbc.getCloudSqlConnection (jdbc: google: mysql: // apis-to-pap: southamerica-east1: magazinemarkederver, sqlserver, *****); Ошибка: не удалось установить соединение с базой данных. Проверьте строку подключения, имя пользователя и пароль. Часть пароля для входа верна, так как я уже тестировал ее в студии управления сервером sql.   -  person Martentes Adm    schedule 02.12.2019
comment
Опять же, попробуйте подключиться не как пользователь root. Кроме того, к какой базе данных вы подключаетесь? Добавьте его в конец вашей строки. У меня была такая же проблема с моей базой данных MySQL Google, которая была решена путем создания другого пользователя и прямого подключения к БД. Вы можете создать базу данных на своем экземпляре через облачную оболочку Google или консольный интерфейс.   -  person Anton Dementiev    schedule 02.12.2019
comment
Следуйте этому примеру и введите имя БД github.com / gsuitedevs / apps-script-samples / blob / master / service /   -  person Anton Dementiev    schedule 02.12.2019
comment
Спасибо за ответ, Антон Дементьев, я следовал руководству, которым вы поделились, создал нового пользователя, базу данных и добавил в строку URL-адреса соединение: Jdbc.getCloudSqlConnection (jdbc: google: mysql: // apis-para-pap: southamerica- east1: revistamarcasserver / SGBDMARCAS, adm, *****); Но произошла та же ошибка. Может быть, это ошибка подключения облачного sql-сервера в скрипт приложений Google?   -  person Martentes Adm    schedule 02.12.2019
comment
Вы занесли в белый список диапазоны IP-адресов Google?   -  person ZektorH    schedule 02.12.2019
comment
Попробуйте изменить проект Google Cloud по умолчанию в скрипте приложений на свой проект экземпляра SQL (чтобы они оба были частью одного проекта GCP).   -  person Anton Dementiev    schedule 02.12.2019
comment
@ZektorH, спасибо за помощь, я внес все эти ips в белый список: (72.14.192.0/18) (64.233.160.0/19) (209.85.128.0/17) (66.102.0.0/20) (74.125.0.0/16) (173.194 .0.0 / 16) (66.249.80.0/20) (64.18.0.0/20) (216.239.32.0/19) (207.126.144.0/20) Но ошибка продолжается ...   -  person Martentes Adm    schedule 02.12.2019
comment
@Anton Dementiev Здравствуйте, еще раз спасибо за ответ. Я ценю, вы знаете какой-нибудь учебник, чтобы сделать это? меняя проект Google Cloud по умолчанию вашего скрипта приложений на ваш экземпляр SQL, я ищу в Google, но не нашел, как   -  person Martentes Adm    schedule 02.12.2019
comment
Чтобы изменить проект GCP по умолчанию, используйте этот справочник. .   -  person ZektorH    schedule 02.12.2019
comment
@ZektorH большое спасибо за то, что поделился учебником, я выполнил все шаги и связал свою облачную платформу Google со скриптом приложений Google, но, к сожалению, проблема не исчезла.   -  person Martentes Adm    schedule 02.12.2019
comment
Пожалуйста, проверьте новый ответ и сообщите нам, решило ли это ваши проблемы.   -  person ZektorH    schedule 04.12.2019


Ответы (1)


Я создал экземпляр Cloud SQL, авторизовал следующие диапазоны IP-адресов и смог подключиться к нему с помощью общедоступного IP-адреса. Мне не удалось подключиться, используя имя подключения экземпляра.


var db = 'mydatabase';
var instanceUrl = "jdbc:mysql://Public_IP_address_SQL";
var dbUrl = instanceUrl + '/' + db;

/**
* Create a new database within a Cloud SQL instance.

*/
function createDatabase() {
var conn = Jdbc.getConnection(instanceUrl,{user: 'root', password: '****'} );
conn.createStatement().execute('CREATE DATABASE ' + db);
}

/**
* Create a new user for your database with full privileges.
*/
function createUser() {
var conn = Jdbc.getConnection(dbUrl,{user: 'root', password: '****'});

var stmt = conn.prepareStatement('CREATE USER ? IDENTIFIED BY ?');
stmt.setString(1, user);
stmt.setString(2, userPwd);
stmt.execute();

conn.createStatement().execute('GRANT ALL ON `%`.* TO ' + user);
}

/**
* Create a new table in the database.
*/
function createTable() {
var conn = Jdbc.getConnection(dbUrl, {user: 'new_user', password: '****'});
conn.createStatement().execute('CREATE TABLE entries '
    + '(guestName VARCHAR(255), content VARCHAR(255), '
    + 'entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));');
}


createDatabase()
createUser() 
createTable()

}   
person marian.vladoi    schedule 04.12.2019
comment
Не работает для SQL Server intence, но спасибо за помощь marian.vladoi - person Martentes Adm; 04.12.2019