Как подключить SuperTokens к базе данных MySQL или PostgreSQL

В этом блоге вы узнаете, как подключить основной сервис SuperTokens к базе данных MySQL или PostgreSQL с помощью Docker и без него.

Это применимо только в том случае, если вы самостоятельно размещаете основной сервис SuperTokens.

Существует несколько способов, как вы можете захотеть запустить SuperTokens вместе с базой данных. В этом блоге мы рассмотрим:

  • 1) Запуск с MySQL:
    • a) Запуск SuperTokens и MySQL без docker
    • b) Запуск SuperTokens с Docker и MySQL без docker
    • c) Запуск SuperTokens без Docker и MySQL с docker
    • d) Запуск SuperTokens и MySQL с docker, но без docker-compose
    • e) Запуск SuperTokens и MySQL с docker, с docker-compose
  • 2) Запуск с PostgreSQL:
    • a) Запуск SuperTokens и PostgreSQL без docker
    • b) Запуск SuperTokens с Docker и PostgreSQL без docker
    • c) Запуск SuperTokens без Docker и PostgreSQL с docker
    • d) Запуск SuperTokens и PostgreSQL с docker, но без docker-compose
    • e) Запуск SuperTokens и PostgreSQL с docker, с docker-compose

Пожалуйста, не стесняйтесь переходить к нужному разделу в зависимости от вашей установки. В каждом разделе мы будем ссылаться на документацию SuperTokens, где это необходимо, чтобы этот блог не был очень длинным.

Все приведенные ниже разделы предполагают, что вы используете операционную систему на базе Linux. Для Windows синтаксис некоторых шагов может отличаться, но общие шаги, которые необходимо выполнить, будут одинаковыми.

1a) Запуск SuperTokens и MySQL без docker

  • Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.
  • Подключитесь к серверу MySQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
  create database supertokens;
Войдите в полноэкранный режим Выйти из полноэкранного режима

Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.

  • Создайте пользователя MySQL, который будет иметь полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
  CREATE USER 'supertokens_user'@'localhost' IDENTIFIED BY 'somePassword';
Войти в полноэкранный режим Выход из полноэкранного режима
  GRANT ALL ON supertokens.* TO 'supertokens_user'@'localhost';
Войти в полноэкранный режим Выйти из полноэкранного режима
  FLUSH PRIVILEGES;
Войти в полноэкранный режим Выход из полноэкранного режима

Обратите внимание, что мы разрешаем этому пользователю работать только через 'localhost'. Это будет работать только в том случае, если ядро SuperTokens также запущено локально. Если вы запускаете ядро в другом месте, то вам нужно заменить 'localhost' в приведенном выше тексте на '%'.

  • Отредактируйте файл SuperTokens config.yaml (расположенный в /usr/lib/supertokens/config.yaml), чтобы добавить следующий конфиг:
  mysql_connection_uri: "mysql://supertokens_user:somePassword@localhost:3306/supertokens"
Войти в полноэкранный режим Выйти из полноэкранного режима

Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра MySQL в вышеуказанной строке uri соединения.

  • Запустите SuperTokens, выполнив команду supertokens start в терминале:
  supertokens start

  Loading storage layer.
  Loading MySQL config.
  ...
  Started SuperTokens on localhost:3567 with PID: ...
Войдите в полноэкранный режим Выйдите из полноэкранного режима
  • Убедитесь, что все настроено правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Войти в полноэкранный режим Выйдите из полноэкранного режима

Если вы получите ответ Hello, значит, настройка ядра завершена!

1b) Запуск SuperTokens с Docker и MySQL без docker

Чтобы эта установка работала, мы должны подключить SuperTokens и MySQL через сеть хост-машины. Для этого нам нужно будет открыть MySQL db для локального IP.

  • Начните с извлечения докер-образа SuperTokens, совместимого с MySQL:
  docker pull registry.supertokens.io/supertokens/supertokens-mysql
Войдите в полноэкранный режим Выйти из полноэкранного режима
  • Раскройте сервер MySQL для всех сетевых интерфейсов на вашей машине. Для этого отредактируйте файл my.cnf (файл конфигурации MySQL), включив в него:
  bind-address = 0.0.0.0
Войти в полноэкранный режим Выйти из полноэкранного режима

Обязательно перезагрузите сервер MySQL после сохранения файла.

  • Подключитесь к серверу MySQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
  create database supertokens;
Войти в полноэкранный режим Выйти из полноэкранного режима

Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.

  • Создайте пользователя MySQL, который будет иметь полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
  CREATE USER 'supertokens_user'@'%' IDENTIFIED BY 'somePassword';
Войти в полноэкранный режим Выход из полноэкранного режима
  GRANT ALL ON supertokens.* TO 'supertokens_user'@'%';
Войти в полноэкранный режим Выйти из полноэкранного режима
  FLUSH PRIVILEGES;
Войти в полноэкранный режим Выход из полноэкранного режима
  • Запустите докер-образ SuperTokens с переменной env, указывающей URI соединения с MySQL:
  docker run 
    -p 3567:3567 
    --network=host 
    -e MYSQL_CONNECTION_URI="mysql://supertokens_user:somePassword@192.168.1.1:3306/supertokens" 
    -d registry.supertokens.io/supertokens/supertokens-mysql
Войти в полноэкранный режим Выйти из полноэкранного режима

Обязательно замените 192.168.1.1 на правильный IP вашей системы.

Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:

  docker ps
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы хотите запускать его на переднем плане, вы можете удалить опцию -d из команды docker run.

  • Убедитесь, что он настроен правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Вход в полноэкранный режим Выйдите из полноэкранного режима

Если вы получите ответ Hello, то настройка ядра завершена!

1c) Запуск SuperTokens без Docker и MySQL с docker

  • Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.

  • Запустите docker-контейнер MySQL:

  docker run 
    -e MYSQL_ROOT_PASSWORD=root 
    -e MYSQL_USER=supertokens_user 
    -e MYSQL_PASSWORD=somePassword 
    -e MYSQL_DATABASE=supertokens 
    --network=host 
    -p 3306:3306 
    -d mysql
Войдите в полноэкранный режим Выйти из полноэкранного режима

Вышеописанное запустит mysql db с новой базой данных под названием supertokens. Ядро SuperTokens будет хранить данные в этой базе. Если вместо этого вы хотите, чтобы данные хранились в существующей базе данных, укажите имя этой базы.

  • Отредактируйте файл SuperTokens config.yaml (расположенный в /usr/lib/supertokens/config.yaml), чтобы добавить следующий конфиг:
  mysql_connection_uri: "mysql://supertokens_user:somePassword@localhost:3306/supertokens"
Войти в полноэкранный режим Выйти из полноэкранного режима

Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра MySQL в вышеуказанной строке uri соединения.

  • Запустите SuperTokens, выполнив команду supertokens start в терминале:
  supertokens start

  Loading storage layer.
  Loading MySQL config.
  ...
  Started SuperTokens on localhost:3567 with PID: ...
Войдите в полноэкранный режим Выйдите из полноэкранного режима
  • Убедитесь, что все настроено правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Войти в полноэкранный режим Выйдите из полноэкранного режима

Если вы получите ответ Hello, то настройка ядра завершена!

1d) Запуск SuperTokens и MySQL с помощью docker, но без docker-compose

  • Начните с извлечения докер-образа SuperTokens, совместимого с MySQL:
  docker pull registry.supertokens.io/supertokens/supertokens-mysql
Войдите в полноэкранный режим Выйдите из полноэкранного режима
  • Запустите докер-контейнер MySQL:
  docker run 
    -e MYSQL_ROOT_PASSWORD=root 
    -e MYSQL_USER=supertokens_user 
    -e MYSQL_PASSWORD=somePassword 
    -e MYSQL_DATABASE=supertokens 
    --network=host 
    -p 3306:3306 
    -d mysql
Войти в полноэкранный режим Выйти из полноэкранного режима

Вышеуказанные действия запустят mysql db с новой базой данных под названием supertokens. Ядро SuperTokens будет хранить данные в этой базе. Если вместо этого вы хотите, чтобы данные хранились в существующей базе данных, укажите имя этой базы.

  • Запустите докер-образ SuperTokens с переменной env, указывающей URI соединения с MySQL:
  docker run 
    -p 3567:3567 
    --network=host 
    -e MYSQL_CONNECTION_URI="mysql://supertokens_user:somePassword@192.168.1.1:3306/supertokens" 
    -d registry.supertokens.io/supertokens/supertokens-mysql
Войти в полноэкранный режим Выход из полноэкранного режима

Обязательно замените 192.168.1.1 на правильный IP вашей системы.

Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:

  docker ps
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы хотите запустить его в фоновом режиме, вы можете удалить опцию -d из команды docker run.

  • Убедитесь, что он настроен правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Вход в полноэкранный режим Выйдите из полноэкранного режима

Если вы получите ответ Hello, то настройка ядра завершена!

1e) Запуск SuperTokens и MySQL с помощью docker, с docker-compose

  • Используйте следующий файл docker compose. Вы можете назвать его docker-compose.yaml.
  version: '3'

  services:
    db:
      image: mysql:latest
      environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_USER: supertokens_user
        MYSQL_PASSWORD: somePassword
        MYSQL_DATABASE: supertokens
      ports:
        - 3306:3306
      networks:
        - app_network
      restart: unless-stopped
      healthcheck:
        test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
        timeout: 20s
        retries: 10

    supertokens:
      image: registry.supertokens.io/supertokens/supertokens-mysql
      depends_on:
        - db
      ports:
        - 3567:3567
      environment:
        MYSQL_CONNECTION_URI: mysql://supertokens_user:somePassword@db:3306/supertokens
      networks:
        - app_network
      restart: unless-stopped
      healthcheck:
        test: >
          bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1rnhost: 127.0.0.1:3567rnConnection: closernrn" >&3 && cat <&3 | grep "Hello"'
        interval: 10s
        timeout: 5s
        retries: 5

  networks:
    app_network:
      driver: bridge
Войдите в полноэкранный режим Выйти из полноэкранного режима
  • Вы можете выполнить следующую команду для запуска службы:
  docker-compose up
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Убедитесь, что все настроено правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Enter fullscreen mode Выйти из полноэкранного режима

Если вы получите ответ Hello, значит, настройка ядра завершена!

2a) Запуск SuperTokens и PostgreSQL без docker

  • Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.
  • Подключитесь к серверу PostgreSQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
  CREATE DATABASE supertokens;
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.

  • Создайте пользователя PostgreSQL, имеющего полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
  CREATE USER supertokens_user WITH ENCRYPTED PASSWORD 'somePassword';
Войти в полноэкранный режим Выход из полноэкранного режима
  GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Отредактируйте файл SuperTokens config.yaml (расположенный в /usr/lib/supertokens/config.yaml), чтобы добавить следующий конфиг:
  postgresql_connection_uri: "postgresql://supertokens_user:somePassword@localhost:5432/supertokens"
Войти в полноэкранный режим Выйти из полноэкранного режима

Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра postgreSQL в вышеуказанной строке uri соединения.

  • Запустите SuperTokens, выполнив команду supertokens start в терминале:
  supertokens start

  Loading storage layer.
  Loading PostgreSQL config.
  ...
  Started SuperTokens on localhost:3567 with PID: ...
Войти в полноэкранный режим Выйдите из полноэкранного режима
  • Убедитесь, что все настроено правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы получите ответ Hello, то настройка ядра завершена!

2b) Запуск SuperTokens с Docker и PostgreSQL без docker

Чтобы эта установка работала, мы должны соединить SuperTokens и PostgreSQL через сеть хост-машины. Для этого нам нужно разрешить PostgreSQL разрешить входящие клиентские соединения по сети.

  • Начните с извлечения докер-образа SuperTokens, совместимого с PostgreSQL:
  docker pull registry.supertokens.io/supertokens/supertokens-postgresql
Войдите в полноэкранный режим Выйдите из полноэкранного режима
  • Разрешите входящие клиентские подключения к базе данных PostgreSQL по сети, добавив следующие строки в файл postgresql.confи pg_hba.conf.

postgresql.conf

  listen_addresses = '0.0.0.0'
Вход в полноэкранный режим Выход из полноэкранного режима

pg_hba.conf

  host all all 0.0.0.0/0 md5
Войти в полноэкранный режим Выход из полноэкранного режима
  • Подключитесь к серверу PostgreSQL на вашей локальной машине и создайте базу данных для записи в SuperTokens:
  CREATE DATABASE supertokens;
Войти в полноэкранный режим Выйти из полноэкранного режима

Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.

  • Создайте пользователя PostgreSQL, который будет иметь полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
  CREATE USER supertokens_user with encrypted password 'somePassword';
Войти в полноэкранный режим Выход из полноэкранного режима
  GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Запустите докер-образ SuperTokens с переменной env, указывающей URI подключения к PostgreSQL:
  docker run               
    -p 3567:3567 
    --network=host 
    -e POSTGRESQL_CONNECTION_URI="postgresql://supertokens_user:somePassword@192.168.1.1:5432/supertokens" 
    -d registry.supertokens.io/supertokens/supertokens-postgresql

Войти в полноэкранный режим Выйти из полноэкранного режима

Обязательно замените 192.168.1.1 на правильный IP вашей системы.

Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:

  docker ps
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы хотите запустить его в фоновом режиме, вы можете удалить опцию -d из команды docker run.

  • Убедитесь, что он настроен правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Вход в полноэкранный режим Выйдите из полноэкранного режима

Если вы получите ответ Hello, то настройка ядра завершена!

2c) Запуск SuperTokens без Docker и PostgreSQL с docker

  • Установите SuperTokens на локальную машину, следуя инструкциям по самостоятельной установке без docker в документации SuperTokens.

  • Запустите docker-контейнер PostgreSQL:

  docker run 
    -e POSTGRES_USER=root 
    -e POSTGRES_PASSWORD=root 
    --network=host 
    -p 5432:5432 
    -d postgres 
    -c listen_addresses=0.0.0.0
Войдите в полноэкранный режим Выйти из полноэкранного режима

Вышеуказанные действия запустят базу данных PostgreSQL. Вам нужно будет подключиться к базе данных и создать пользователя с привилегиями.

```sql
CREATE DATABASE supertokens;
```
Войти в полноэкранный режим Выход из полноэкранного режима

Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.

  • Создайте пользователя PostgreSQL, имеющего полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
  CREATE USER supertokens_user with encrypted password 'somePassword';
Войти в полноэкранный режим Выход из полноэкранного режима
  GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Отредактируйте файл SuperTokens config.yaml (расположенный в /usr/lib/supertokens/config.yaml), чтобы добавить следующий конфиг:
  postgresql_connection_uri: "postgresql://supertokens_user:somePassword@localhost:5432/supertokens"
Войти в полноэкранный режим Выйти из полноэкранного режима

Убедитесь, что вы ввели правильные значения для пользователя, пароля, имени базы данных и местоположения вашего экземпляра PostgreSQL в вышеуказанной строке uri соединения.

  • Запустите SuperTokens, выполнив команду supertokens start в терминале:
  supertokens start

  Loading storage layer.
  Loading PostgreSQL config.
  ...
  Started SuperTokens on localhost:3567 with PID: ...
Войдите в полноэкранный режим Выйдите из полноэкранного режима
  • Убедитесь, что все настроено правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Войти в полноэкранный режим Выйдите из полноэкранного режима

Если вы получите ответ Hello, значит, настройка ядра завершена!

2d) Запуск SuperTokens и PostgreSQL с помощью docker, но без docker-compose

  • Начните с извлечения docker-образа SuperTokens, совместимого с PostgreSQL:
  docker pull registry.supertokens.io/supertokens/supertokens-postgresql
Войдите в полноэкранный режим Выйдите из полноэкранного режима
  • Запустите докер-контейнер PostgreSQL:
  docker run 
    -e POSTGRES_USER=root 
    -e POSTGRES_PASSWORD=root 
    --network=host 
    -p 5432:5432 
    -d postgres 
    -c listen_addresses=0.0.0.0
Войти в полноэкранный режим Выйти из полноэкранного режима

Вышеописанное запустит базу данных PostgreSQL. Вам нужно будет подключиться к базе данных и создать пользователя с привилегиями.

```sql
CREATE DATABASE supertokens;
```
Войти в полноэкранный режим Выход из полноэкранного режима

Если у вас уже есть база данных для вашего приложения и вы хотите, чтобы SuperTokens создавал таблицы в ней, вы можете пропустить этот шаг.

  • Создайте пользователя PostgreSQL, имеющего полный доступ к базе данных, созданной на предыдущем шаге. Этот пользователь будет использоваться SuperTokens для создания и записи в таблицы базы данных:
  CREATE USER supertokens_user with encrypted password 'somePassword';
Войти в полноэкранный режим Выход из полноэкранного режима
  GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Запустите докер-образ SuperTokens с переменной env, указывающей URI подключения к PostgreSQL:
  docker run               
    -p 3567:3567 
    --network=host 
    -e POSTGRESQL_CONNECTION_URI="postgresql://supertokens_user:somePassword@192.168.1.1:5432/supertokens" 
    -d registry.supertokens.io/supertokens/supertokens-postgresql

Войти в полноэкранный режим Выйти из полноэкранного режима

Обязательно замените 192.168.1.1 на правильный IP вашей системы.

Это позволит запустить образ docker в фоновом режиме. Вы можете найти его, запустив:

  docker ps
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы хотите запускать его на переднем плане, вы можете удалить опцию -d из команды docker run.

  • Убедитесь, что он настроен правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Вход в полноэкранный режим Выйдите из полноэкранного режима

Если вы получите ответ Hello, то настройка ядра завершена!

## 2e) Запуск SuperTokens и PostgreSQL с помощью docker, с docker-compose

  • Используйте следующий файл docker compose. Вы можете назвать его docker-compose.yaml.
  version: '3'

  services:
    db:
      image: 'postgres:latest'
      environment:
        POSTGRES_USER: supertokens_user 
        POSTGRES_PASSWORD: somePassword 
        POSTGRES_DB: supertokens
      ports:
        - 5432:5432
      networks:
        - app_network
      restart: unless-stopped
      healthcheck:
        test: ['CMD', 'pg_isready -U supertokens_user']
        interval: 5s
        timeout: 5s
        retries: 5

    supertokens:
      image: registry.supertokens.io/supertokens/supertokens-postgresql
      depends_on:
        - db
      ports:
        - 3567:3567
      environment:
        POSTGRESQL_CONNECTION_URI: "postgresql://supertokens_user:somePassword@db:5432/supertokens"
      networks:
        - app_network
      restart: unless-stopped
      healthcheck:
        test: >
          bash -c 'exec 3<>/dev/tcp/127.0.0.1/3567 && echo -e "GET /hello HTTP/1.1rnhost: 127.0.0.1:3567rnConnection: closernrn" >&3 && cat <&3 | grep "Hello"'
        interval: 10s
        timeout: 5s
        retries: 5

  networks:
    app_network:
      driver: bridge

Войдите в полноэкранный режим Выйти из полноэкранного режима
  • Вы можете выполнить следующую команду для запуска службы:
  docker-compose up
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Убедитесь, что все настроено правильно, запросив службу ядра:
  curl http://localhost:3567/hello
Enter fullscreen mode Выйти из полноэкранного режима

Если вы получите ответ Hello, то настройка ядра завершена!

Оцените статью
Procodings.ru
Добавить комментарий