Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

如何将 SuperTokens 连接到 MySQL 或 PostgreSQL 数据库

Posted on 2022-05-20

tQ9kB6bRVWOji0aXNiHdKY9Q17y1-k4a2kzx.png

\ \ 本篇博客将带你了解 SuperTokens 核心服务与 MySQL 或 PostgreSQL 数据库的连接,无论是否使用 Docker。

\

这仅适用于自托管 SuperTokens 核心服务的情况。

\ 有几种方法可以让您将 SuperTokens 与数据库一起运行。在本博客中,我们将介绍:

  • \
  1. 使用 MySQL 运行:
  • a) 在没有 docker 的情况下运行 SuperTokens 和 MySQL
  • b) 在没有 docker 的情况下使用 Docker 和 MySQL 运行 SuperTokens
  • c) 在没有 Docker 的情况下运行 SuperTokens 和使用 docker 运行 MySQL
  • d) 使用 docker 运行 SuperTokens 和 MySQL,但没有 docker-compose
  • e) 使用 docker 和 docker-compose 运行 SuperTokens 和 MySQL
  • \
  1. 使用 PostgreSQL 运行:
  • a) 在没有 docker 的情况下运行 SuperTokens 和 PostgreSQL
  • b) 在没有 docker 的情况下使用 Docker 和 PostgreSQL 运行 SuperTokens
  • c) 在没有 Docker 的情况下运行 SuperTokens 和使用 docker 运行 PostgreSQL
  • d) 使用 docker 运行 SuperTokens 和 PostgreSQL,但没有 docker-compose
  • e) 使用 docker 和 docker-compose 运行 SuperTokens 和 PostgreSQL

\ 请根据您的设置随意导航到正确的部分。在每个部分中,我们将在适用的地方链接到 SuperTokens 文档,这样这个博客就不是很

冗长。

\

以下所有部分均假设您将使用基于 Linux 的操作系统。对于 Windows,某些步骤的语法可能不同,但需要执行的总体步骤是相同的​​。

1a) 在没有 docker 的情况下运行 SuperTokens 和 MySQL


\

  • 按照 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:[email protected]:3306/supertokens"

\

确保在上述连接 uri 字符串中为 MySQL 实例的用户、密码、数据库名称和位置输入正确的值。

\

  • 通过在终端上运行supertokens start来运行 SuperTokens:

    \

 supertokens start Loading storage layer. Loading MySQL config. ... Started SuperTokens on localhost:3567 with PID: ...

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

1b) 在没有 docker 的情况下使用 Docker 和 MySQL 运行 SuperTokens


为了使这个设置工作,我们必须通过主机的网络连接 SuperTokens 和 MySQL。为此,我们必须将 MySQL 数据库公开给本地 IP。

\

  • 首先拉取与 MySQL 兼容的 SuperTokens docker 镜像:

    \

 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 将使用此用户来创建和写入数据库表:

    \

 REATE USER 'supertokens_user'@'%' IDENTIFIED BY 'somePassword';

\

 GRANT ALL ON supertokens.* TO 'supertokens_user'@'%';

\

 FLUSH PRIVILEGES;

\

  • 使用指定 MySQL 连接 URI 的 env var 运行 SuperTokens docker 映像:
  • \
 docker run \ -p 3567:3567 \ --network=host \ -e MYSQL_CONNECTION_URI="mysql://supertokens_user:[email protected]:3306/supertokens" \ -d registry.supertokens.io/supertokens/supertokens-mysql

\

请务必将192.168.1.1替换为您系统的正确 IP。

\ 这将在后台启动 docker 图像。您可以通过运行找到它:

 docker ps

\ 如果要在前台运行,可以在docker run命令中去掉-d选项。

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

1c) 不使用 Docker 运行 SuperTokens,使用 docker 运行 MySQL


  • 按照 SuperTokens 文档中的自托管(不使用 docker)说明在本地计算机上安装 SuperTokens。

    \

  • 启动 MySQL docker 容器:

    \

 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

\ 以上将使用名为supertokens的新数据库启动 mysql 数据库。 SuperTokens 核心将数据存储在该数据库中。如果您希望将数据存储在现有数据库中,请提供该数据库的名称。

\

  • 编辑 SuperTokens config.yaml文件(位于/usr/lib/supertokens/config.yaml )以添加以下配置:

    \

 mysql_connection_uri: "mysql://supertokens_user:[email protected]:3306/supertokens"

\

确保在上述连接 uri 字符串中为 MySQL 实例的用户、密码、数据库名称和位置输入正确的值。

\

  • 通过在终端上运行supertokens start来运行 SuperTokens:

    \

 supertokens start Loading storage layer. Loading MySQL config. ... Started SuperTokens on localhost:3567 with PID: ...

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

1d) 使用 docker 运行 SuperTokens 和 MySQL,但没有 docker-compose


  • 首先拉取与 MySQL 兼容的 SuperTokens docker 镜像:

    \

 docker pull registry.supertokens.io/supertokens/supertokens-mysql

\

  • 启动 MySQL docker 容器:

    \

 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

\ 以上将使用名为supertokens的新数据库启动 mysql 数据库。 SuperTokens 核心将数据存储在该数据库中。如果您希望将数据存储在现有数据库中,请提供该数据库的名称。

\

  • 使用指定 MySQL 连接 URI 的 env var 运行 SuperTokens docker 映像:

    \

 docker run \ -p 3567:3567 \ --network=host \ -e MYSQL_CONNECTION_URI="mysql://supertokens_user:[email protected]:3306/supertokens" \ -d registry.supertokens.io/supertokens/supertokens-mysql

\

请务必将192.168.1.1替换为您系统的正确 IP。

\ 这将在后台启动 docker 图像。您可以通过运行找到它:

\

 docker ps

\ 如果要在前台运行,可以在docker run命令中去掉-d选项。

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

1e) 使用 docker 和 docker-compose 运行 SuperTokens 和 MySQL


  • 使用以下 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:[email protected]: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.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"' interval: 10s timeout: 5s retries: 5 networks: app_network: driver: bridge

\

  • 您可以运行以下命令来启动服务:

    \

 docker-compose up

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

2a) 在没有 docker 的情况下运行 SuperTokens 和 PostgreSQL


  • 按照 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:[email protected]:5432/supertokens"

\

确保在上面的连接 uri 字符串中为 postgreSQL 实例的用户、密码、数据库名称和位置输入正确的值。

\

  • 通过在终端上运行 supertokens start 来运行 SuperTokens:

    \

 supertokens start Loading storage layer. Loading PostgreSQL config. ... Started SuperTokens on localhost:3567 with PID: ...

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\

  • 如果您收到Hello回复,则核心设置完成!

2b) 在没有 docker 的情况下使用 Docker 和 PostgreSQL 运行 SuperTokens


要使此设置正常工作,我们必须通过主机网络连接 SuperTokens 和 PostgreSQL。为此,我们必须允许 PostgreSQL 允许通过网络传入客户端连接。

\

  • 首先拉取与 PostgreSQL 兼容的 SuperTokens docker 镜像:

    \

 docker pull registry.supertokens.io/supertokens/supertokens-postgresql

\

  • 通过将以下行添加到postgresql.conf和pg_hba.conf文件,允许传入客户端通过网络连接到您的 PostgreSQL 数据库。

    \ 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;

\

  • 使用指定 PostgreSQL 连接 URI 的 env var 运行 SuperTokens docker 映像:

    \

 docker run \ -p 3567:3567 \ --network=host \ -e POSTGRESQL_CONNECTION_URI="postgresql://supertokens_user:[email protected]:5432/supertokens" \ -d registry.supertokens.io/supertokens/supertokens-postgresql

\

请务必将192.168.1.1替换为您系统的正确 IP。

\ 这将在后台启动 docker 图像。您可以通过运行找到它:

\

 docker ps

\ 如果要在前台运行,可以在docker run命令中去掉-d选项。

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

2c) 不使用 Docker 运行 SuperTokens,使用 docker 运行 PostgreSQL


  • 按照 SuperTokens 文档中的自托管(不使用 docker)说明在本地计算机上安装 SuperTokens。

    \

  • 启动 PostgreSQL docker 容器:

    \

 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 数据库。您将需要连接到数据库并创建具有权限的用户。

\

 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:[email protected]:5432/supertokens"

\

确保在上述连接 uri 字符串中为 PostgreSQL 实例的用户、密码、数据库名称和位置输入正确的值。

\

  • 通过在终端上运行supertokens start来运行 SuperTokens:

    \

 supertokens start Loading storage layer. Loading PostgreSQL config. ... Started SuperTokens on localhost:3567 with PID: ...

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

2d) 使用 docker 运行 SuperTokens 和 PostgreSQL,但没有 docker-compose


  • 首先拉取与 PostgreSQL 兼容的 SuperTokens docker 镜像:

    \

 docker pull registry.supertokens.io/supertokens/supertokens-postgresql

\

  • 启动 PostgreSQL docker 容器:

    \

 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 数据库。您将需要连接到数据库并创建具有权限的用户。

\

 CREATE DATABASE supertokens;

\ 如果您的应用程序已经有一个数据库并且希望 SuperTokens 在其中创建表,您可以跳过此步骤。

\

  • 创建一个对上一步中创建的数据库具有完全访问权限的 PostgreSQL 用户。 SuperTokens 将使用此用户来创建和写入数据库表:

    \

 CREATE USER supertokens_user with encrypted password 'somePassword';

\

 GRANT ALL PRIVILEGES ON DATABASE supertokens TO supertokens_user;

\

  • 使用指定 PostgreSQL 连接 URI 的 env var 运行 SuperTokens docker 映像:

    \

 docker run \ -p 3567:3567 \ --network=host \ -e POSTGRESQL_CONNECTION_URI="postgresql://supertokens_user:[email protected]:5432/supertokens" \ -d registry.supertokens.io/supertokens/supertokens-postgresql

\

请务必将192.168.1.1替换为您系统的正确 IP。

\ 这将在后台启动 docker 图像。您可以通过运行找到它:

\

 docker ps

\ 如果要在前台运行,可以在docker run命令中去掉-d选项。

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

## 2e) 使用 docker 和 docker-compose 运行 SuperTokens 和 PostgreSQL


  • 使用以下 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:[email protected]: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.1\r\nhost: 127.0.0.1:3567\r\nConnection: close\r\n\r\n" >&3 && cat <&3 | grep "Hello"' interval: 10s timeout: 5s retries: 5 networks: app_network: driver: bridge

\

  • 您可以运行以下命令来启动服务:

    \

 docker-compose up

\

  • 通过查询核心服务来验证它是否设置正确:

    \

 curl http://localhost:3567/hello

\ 如果你得到一个Hello回复,那么核心设置就完成了!

\

由SuperTokens的人们撰写 — 希望您喜欢!我们始终在我们的Discord 服务器上可用。

原文: https://hackernoon.com/how-to-connect-supertokens-to-a-mysql-or-to-a-postgresql-database?source=rss

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme