php - “用户访问被拒绝,使用密码:是”Laravel 8 Heroku
问题描述
这是我使用本教程config/database.php
修改的文件。它说我需要在上述 php 页面上方附加代码块。(本教程使用的是postgreSQL,而我的系统需要使用MySQL)。$DATABASE_URL=parse_url("mysql://####");
// attached $DATABASE_URL=parse_url("mysql://####") on the topmost part of the page
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => $DATABASE_URL['host'], // edited this line
'port' => $DATABASE_URL['port'], // edited this line
'database' => ltrim($DATABASE_URL['path'], '/'), // edited this line
'username' => $DATABASE_URL['user'], // edited this line
'password' => $DATABASE_URL['pass'], // edited this line
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
下面是原始的mysql代码
// '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' => true,
// 'engine' => null,
// 'options' => extension_loaded('pdo_mysql') ? array_filter([
// PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
// ]) : [],
// ],
运行具有上述问题的系统时的错误输出
SQLSTATE[HY000] [1045] 用户 '{{redacted username}}'@'{{redacted ip address}}' 的访问被拒绝(使用密码:YES)(SQL:select * from
video_links
wherehome_video
= true andvideo_links
.deleted_at
is null limit 1 )
我在 Heroku CLI 中运行迁移命令时遇到的另一个问题是:
PHP Warning: Undefined array key "port" in /app/config/database.php on line 51
似乎$DATABASE_URL=parse_url("mysql://####")
没有在其数组中获取端口值。
我应该如何处理这个?
解决方案
您可以config/database.php
保持不变。
并添加一个 ENV var DATABASE_URL
:
在设置中或通过 CLI:
heroku config:set DATABASE_URL=YOUR_URL
推荐阅读
- google-cloud-platform - Google Cloud Build 中的环境变量
- docker - 您如何管理主机 CPU 和 docker 容器?
- node.js - 比特币的 SendTransaction API 创建
- javascript - 表单提交后清除字段(谷歌表单网络应用程序)
- python - 使用 Teradata.UdaExec 将 pandas 数据帧写入 Teradata
- python - 将列表 numpy 数组转换为 CNN-Keras 的普通数组
- python - 无法使用 Scrapy 从网页加载和抓取数据
- python - Python Wordpress_XMLRPC NewComment Auth
- php - 如何在 foreach 循环中更新多个字段记录?
- python - 如何从用户那里获取输入并根据输入调用函数?