SSL Yii соединение с postgresql облачной базой данных Google - PullRequest
0 голосов
/ 11 июля 2019

Я новичок в Yii, и мне нужно подключить свое приложение Yii2 к облачной базе данных Google (postgres). Мне нужно установить соединение, используя SSL-сертификаты, которые у меня уже есть. У меня есть все учетные данные (хост, пользователь, 3x ssl и т. Д.).

Дело в том, что я могу подключиться к этой удаленной базе данных Google, используя как клиент PgAdmin, так и консоль Google SDK (Google Shell), но я не могу подключить свое приложение Yii2 к этой базе данных. Я прочитал много документации и ничего не нашел.

  • Это то, что у меня есть в моем общем / config / main-local.php (расширенная конфигурация Yii2), я добавил поле «атрибуты», на всякий случай, если оно работает, но, как я думал, не работает:

    'db' => [
        'class' => 'yii\db\Connection',       
        'dsn' => 'pgsql:host=my-host;dbname=my-db-name',
        'attributes' => [
            PDO::PGSQL_ATTR_SSL_KEY => 'path/to/my/client-key.pem',
            PDO::PGSQL_ATTR_SSL_CERT => 'path/to/my/client-cert.pem',
            PDO::PGSQL_ATTR_SSL_CA => 'path/to/my/server-ca.pem',
        ],
        'username' => 'myusername',
        'password' => 'mypassword',
        'charset' => 'utf8',
    ],
    
  • Вот как я подключаюсь через Google Shell, это работает:

psql "sslmode = verify-ca sslrootcert = путь / к / my / server-ca.pem sslcert = путь / к / my / client-cert.pem sslkey = путь / к / my / client-key.pem hostaddr = google-instance-host user = david.tamarit dbname = google-db-name "`

Затем я ввел свой пароль и подключился к своей базе данных в оболочке Google.

  • В PgAdmin я передаю свои учетные данные и подключаюсь к базе данных, это тоже работает.

Как я могу подключиться к моей облачной базе данных Google с помощью Yii?

Заранее спасибо!

1 Ответ

1 голос
/ 11 июля 2019

Поскольку БД не находится на вашем компьютере, вам не нужно устанавливать PostgreSQL, и это причина (я думаю), что эти константы не распознаются. Попробуйте это:

'attributes' => [
    'sslmode' => 'verify-ca',
    'sslkey' => 'path/to/my/client-key.pem',
    'sslcert' => 'path/to/my/client-cert.pem',
    'sslrootcert' => 'path/to/my/server-ca.pem',
],
...