【问题标题】:SQLSTATE[HY000] [1045] Access denied for user 'username'@'ec2_privateIP' (using password: YES)SQLSTATE[HY000] [1045] 用户'username'@'ec2_privateIP'的访问被拒绝(使用密码:YES)
【发布时间】:2020-09-11 10:55:51
【问题描述】:

我知道有很多与此问题类似的问题,但没有一个可以帮助我解决问题。

我正在尝试将我的 EC2 实例上的 laravel 项目连接到我的 RDS 实例。

使用时可以成功连接RDS实例并创建表:

mysql -h ....rds.amazonaws.com -u cmadmin -p

但是,当我运行 php artisan migrate 时,我目前收到以下错误:

In Connection.php line 664:

  SQLSTATE[HY000] [1045] Access denied for user 'cmadmin'@'ec2_privateIP' (using password: YES) (SQL: select * from information_schema.tables where table_schema = dbname_cm and table_name = migrations)


In Connector.php line 67:

  SQLSTATE[HY000] [1045] Access denied for user 'cmadmin'@'ec2_privateIP' (using password: YES)

这是 .env 文件的摘录:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=generatedkey
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=....rds.amazonaws.com
DB_PORT=3306
DB_DATABASE=dbname_cm
DB_USERNAME=cmadmin
DB_PASSWORD=rfL8zvXnMEzit02

这是 config/database.php 文件的摘录:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', ''),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', ''),
    'username' => env('DB_USERNAME', ''),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_0900_ai_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
    'option'  => [
        PDO::MYSQL_ATTR_SSL_CA => base_path('/var/mysql-cert/dbname_cm-db.pem')
    ],
],

我什至将以下内容添加到app/Providers/AppServiceProvider.php

public function boot()
    {
       Schema::defaultStringLength(191);
    }

我已经跑过: php工匠缓存:清除 php工匠配置:清除 php工匠配置:缓存

PHP 7.2.24-0ubuntu0.18.04.4 Laravel 框架 5.5.49 AWS RDS:MySQL 8.0.17

mysql> SELECT USER(),CURRENT_USER();
+------------------------+----------------+
| USER()                 | CURRENT_USER() |
+------------------------+----------------+
| cmadmin@ec2_privateIP  | cmadmin@%      |
+------------------------+----------------+
mysql> show grants;
| Grants for cmadmin@% |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO `cmadmin`@`%` WITH GRANT OPTION |
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| dbname_cm          |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

【问题讨论】:

    标签: php mysql laravel amazon-ec2 amazon-rds


    【解决方案1】:
        'driver' => 'mysql',
        'host' => env('DB_HOST', ''),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', ''),
        'username' => env('DB_USERNAME', ''),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_0900_ai_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
        'option'  => [
            PDO::MYSQL_ATTR_SSL_CA => base_path('/var/mysql-cert/dbname_cm-db.pem')
        ],
    ],```
    
    have you already try file this part `'username' => env('DB_USERNAME', ''),` with `'username' => env('DB_USERNAME', 'cmadmin'),`
    
    and of course the DB_PASSWORD part with your predefined password
    

    【讨论】:

    • 是的,我也用数据库凭据填充了 database.php 文件
    【解决方案2】:

    我通过在 database.php 文件中添加以下代码解决了这个问题

    'mysql' = [
    'sslmode' => 'require',
    'options'   => array(
                PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
                PDO::MYSQL_ATTR_SSL_KEY => '/certs/client-key.pem',
                PDO::MYSQL_ATTR_SSL_CERT => '/certs/client-cert.pem',
                PDO::MYSQL_ATTR_SSL_CA => '/certs/ca.pem',
            )
    ],
    

    【讨论】:

    • 我有同样的问题,但我不知道如何获得这些证书和密钥?
    猜你喜欢
    • 2017-07-18
    • 2020-08-20
    • 2017-08-10
    • 2019-07-23
    • 2019-12-08
    • 1970-01-01
    • 2017-12-30
    • 2015-05-16
    • 2023-03-08
    相关资源
    最近更新 更多