\ \ 本篇博客将带你了解 SuperTokens 核心服务与 MySQL 或 PostgreSQL 数据库的连接,无论是否使用 Docker。
\
这仅适用于自托管 SuperTokens 核心服务的情况。
\ 有几种方法可以让您将 SuperTokens 与数据库一起运行。在本博客中,我们将介绍:
- \
- 使用 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
- \
- 使用 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