cakephp错误。与数据库的连接...不是......:用户访问被拒绝' my_app' @' localhost' (使用密码:是)

时间:2015-05-14 12:43:14

标签: database cakephp default cakephp-3.0

我正在尝试启动CakePHP。我制作了书签,并通过命令bin\cake server进行了测试。它显示一个错误,因为无法建立与数据库的连接:

SQLSTATE[HY000] [1045] Access denied for user 'my_app'@'localhost' (using password: YES).

我读了config/app.default.php文件。它说有一个数据库my_app和另一个数据库test_myapp和一些用户。我在xampp中的phymyadmin中找不到这些数据库。我应该手动创建命名数据库和用户吗?我认为CakePHP应该自动创建它们。或者我应该给出我喜欢的数据库等名称并创建它们。我在Windows 7中使用xampp并且是CakePHP的新手。

8 个答案:

答案 0 :(得分:5)

Cake不会为您创建数据库或数据库用户。您需要自己创建它们,然后将这些数据库凭据匹配到db配置文件中。 app/Config/app.php文件中的数据源应类似于:

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'username' => 'my_db_user',
        'password' => 'my_db_user_password',
        'database' => 'cake_database_name',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
    ]
],

在此示例中,您必须创建名为: cake_database_name 的数据库,然后添加名为 my_db_user 的数据库用户,密码为 my_db_user_password

答案 1 :(得分:2)

  • 使用数据库连接参数(即主机,用户名,密码,数据库名称)而不是 Config / app.php 编辑 Config / app_local.php 文件。这样可以解决问题。

  • 请确保首先创建相同的数据库,并为您在app_local.php文件中编写的同一用户提供足够的特权。

答案 2 :(得分:1)

参见Mysql.php:

类Mysql扩展Driver {

use MysqlDialectTrait;
use PDODriverTrait;

/**
 * Base configuration settings for MySQL driver
 *
 * @var array
 */
protected $_baseConfig = [
    'persistent' => true,
    'host' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'cake',
    'port' => '3306',
    'flags' => [],
    'encoding' => 'utf8',
    'timezone' => null,
    'init' => [],
];

然后在app.php中写

            'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        /**
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'non_standard_port_number',
        'username' => 'root',
        'password' => '', 
        'database' => 'cake',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'flags' => [],
        'cacheMetadata' => true,
        'log' => false,

...],

在phpMyAdmin中 创建蛋糕数据库。 一切都好。

答案 3 :(得分:0)

错误:

  

SQLSTATE [HY000] [1045]用户'my_app'@'localhost'的访问被拒绝   (使用密码:是)。

原因:

  

在config / app.php中未设置用户名:“ my_app”,密码:“ secret” [或任何其他]   文件。

解决方案:

  

如果是WAMP,请转到phpmyadmin页面,然后我们可以选择cake_cms   数据库->特权->创建用户名和密码,与config中的相同   文件config / app.php,刷新http://localhost:8765/页面。   现在应该显示

     

CakePHP能够连接到数据库。

答案 4 :(得分:0)

使用数据库连接参数

编辑 Config / app_local.php 文件。您将找到主机,用户名,密码,数据库名称。

请勿使用数据库连接参数编辑config / app.php

您的问题现在已解决

CakePHP 4.x

答案 5 :(得分:0)

如果使用的是wamp,请确保在数据源中取消对端口的注释,并确保'port'=>'3308'

答案 6 :(得分:0)

enter image description here我通过在phpmyadmin顶部检查端口来解决此问题
并取消提交app_local.php中的行

'port' => '3308',

答案 7 :(得分:0)

CakePHP3.9.3,app_local.php,'用户名'=>'根','密码'=>'','数据库'=>'数据库名'