You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel部署到Azure后连接MySQL时用户名自动追加IP问题求助

解决方案

核心思路

通过PDO初始化命令强制指定MySQL登录用户的完整格式,覆盖Laravel/PDO自动追加IP的行为。

具体步骤

修改config/database.php中的MySQL配置,在options数组中添加PDO::MYSQL_ATTR_INIT_COMMAND,执行SET USER语句指定你需要的用户名格式:

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => false,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA', false),
        // 添加以下初始化命令,替换为你的目标用户名格式
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET USER = 'acc_statement@mysite';",
    ]) : [],
],

原理说明

当Laravel通过PDO连接Azure MySQL时,驱动会自动将用户名追加客户端IP后缀。通过MYSQL_ATTR_INIT_COMMAND,我们在连接建立后立即执行SET USER语句,强制切换到你需要的带域名后缀的用户身份,绕过驱动的自动修改逻辑。

额外检查

  • 确认Azure MySQL中已创建acc_statement@mysite账户,并授予对应数据库的访问权限
  • 确保该账户的授权规则允许从Azure应用服务的IP范围访问(或临时设置为%测试)

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:04:51