无法从 linux 上的 laravel 连接 azure sql 服务器
Can't connect a azure sql server from laravel on linux
我有一个 laravel 应用程序连接到 Azure 上的 sql 服务器数据库。
在我的本地 Wamp 服务器上,该应用程序可以运行。
我已经使用 docker 图像在我的 linux 服务器上安装,并且没有连接 Azure 数据库。
每次returns这个错误信息:
SQLSTATE[HYT00]: [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (SQL: select * from [mytable])
MSDOBC 驱动程序、sqlsrv 和 pdo_sqlsrv 已正确安装。
我想这与 laravel 有关,因为如果我使用 php 脚本查询数据库就没有问题。
我的 .ENV 文件有数据库设置:
DB_CONNECTION=sqlsrv
DB_HOST=db.database.windows.net
DB_PORT=1433
DB_DATABASE=db_name
DB_USERNAME=db_user
DB_PASSWORD=pwd
Laravel log 和 docker log 没什么意思,不知道怎么解决。
Azure SQL 数据库仅支持表格数据流 (TDS) 协议(可通过 TCP 和默认端口 1433 访问)并使用自己的基于 IP 的防火墙。所以你可以尝试以下方法:
使用带有协议、服务器名称和端口的连接字符串。在您的情况下,您需要使用 tcp:db.database.windows.net,1433
作为 DB_HOST
.
的值
将您的 LINUX 服务器的 IP 地址添加为防火墙规则。这在 documentation:
中有解释
When a computer tries to connect to your server from the internet, the
firewall first checks the originating IP address of the request
against the database-level IP firewall rules for the database that the
connection requests.
If the address is within a range that's specified in the
database-level IP firewall rules, the connection is granted to the
database that contains the rule.
If the address isn't within a range in the database-level IP firewall rules, the firewall checks the server-level IP firewall
rules.
If the address is within a range that's in the server-level IP firewall rules, the connection is granted. Server-level IP firewall
rules apply to all databases managed by the server.
If the address isn't within a range that's in any of the database-level or server-level IP firewall rules, the connection
request fails
我有一个 laravel 应用程序连接到 Azure 上的 sql 服务器数据库。
在我的本地 Wamp 服务器上,该应用程序可以运行。 我已经使用 docker 图像在我的 linux 服务器上安装,并且没有连接 Azure 数据库。 每次returns这个错误信息:
SQLSTATE[HYT00]: [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (SQL: select * from [mytable])
MSDOBC 驱动程序、sqlsrv 和 pdo_sqlsrv 已正确安装。
我想这与 laravel 有关,因为如果我使用 php 脚本查询数据库就没有问题。
我的 .ENV 文件有数据库设置:
DB_CONNECTION=sqlsrv
DB_HOST=db.database.windows.net
DB_PORT=1433
DB_DATABASE=db_name
DB_USERNAME=db_user
DB_PASSWORD=pwd
Laravel log 和 docker log 没什么意思,不知道怎么解决。
Azure SQL 数据库仅支持表格数据流 (TDS) 协议(可通过 TCP 和默认端口 1433 访问)并使用自己的基于 IP 的防火墙。所以你可以尝试以下方法:
使用带有协议、服务器名称和端口的连接字符串。在您的情况下,您需要使用
的值tcp:db.database.windows.net,1433
作为DB_HOST
.将您的 LINUX 服务器的 IP 地址添加为防火墙规则。这在 documentation:
中有解释
When a computer tries to connect to your server from the internet, the firewall first checks the originating IP address of the request against the database-level IP firewall rules for the database that the connection requests.
If the address is within a range that's specified in the database-level IP firewall rules, the connection is granted to the database that contains the rule.
If the address isn't within a range in the database-level IP firewall rules, the firewall checks the server-level IP firewall rules.
If the address is within a range that's in the server-level IP firewall rules, the connection is granted. Server-level IP firewall rules apply to all databases managed by the server.
If the address isn't within a range that's in any of the database-level or server-level IP firewall rules, the connection request fails