【问题标题】:Laravel app on Azure: Access denied for user 'azure'@'localhost'Azure 上的 Laravel 应用程序:用户 'azure'@'localhost' 的访问被拒绝
【发布时间】:2020-05-01 11:28:09
【问题描述】:

我正在将 Laravel 应用程序部署到 Azure(Web 应用程序 + Mysql),到目前为止,我执行了以下步骤:

1- 在 App 中激活 Mysql

2- 连接到 BitBucket 存储库并确保代码已同步

3- 创建 .env 文件并设置数据库变量如下

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=port form Mysql connection string
DB_DATABASE=localdb
DB_USERNAME=azure
DB_PASSWORD=password form Mysql connection string

4-冉php artisan config:cache

问题:

运行 php artisan migrate 返回此错误:


  SQLSTATE[HY000] [1045] Access denied for user 'azure'@'localhost' (using pa  

  ssword: YES) (SQL: select * from information_schema.tables where table_sche  

  ma = localdb and table_name = migrations and table_type = 'BASE TABLE')      

奇怪的是,我在 PhpMyadmin 中运行 SHOW GRANTS FOR CURRENT_USER 并返回: GRANT ALL PRIVILEGES ON *.* TO 'azure'@'localhost'

P.s : 我从 Kudu 调试控制台获得了数据库凭据,并确保密码或用户名之前/之后没有空格

【问题讨论】:

  • 您是否尝试将DB_HOST=127.0.0.1 更改为DB_HOST=localhost

标签: php mysql laravel azure


【解决方案1】:

这是 Laravel 版本 7.9.* 中的一个问题,您的 .env 文件中有变量 DB_PASSWORD。 如果您的密码中包含“#”,Laravel 将评论该符号后的每个字符。例如,如果您的密码是 DB_PASSWORD = 85SF#G52a@ Laravel 将其解释为 DB_PASSWORD = 85SF 忽略其余字符。

解决方案 将 DB_PASSWORD 变量的值用双引号括起来,如下所示:

DB_PASSWORD="85SF#G52a@"

我花了2天时间才发现问题,希望这对遇到同样问题的人有所帮助。

【讨论】:

    【解决方案2】:

    改成

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=port form Mysql connection string
    DB_DATABASE=localdb
    DB_USERNAME=azure
    DB_PASSWORD=password form Mysql connection string
    

    DB_HOST=localhost
    

    然后再次测试

    【讨论】:

    • 感谢您的回答,我做了并清除了配置缓存.. 仍然是同样的问题
    【解决方案3】:

    我遇到了同样的问题,在网上搜索时,我遇到了你的问题。您可以使用用户 root 而不是 azure 连接到数据库。用户 root 的密码是“password”。如果您仍想向用户 azure 授予所有权限,则可以使用用户 root 的凭据来执行此操作。

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 2021-08-10
      • 2019-06-05
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      相关资源
      最近更新 更多