Database cakephp错误。数据库连接…未…:拒绝用户访问';我的应用程序&x27@';本地主机';(使用密码:是)

Database cakephp错误。数据库连接…未…:拒绝用户访问';我的应用程序&x27@';本地主机';(使用密码:是),database,cakephp,default,cakephp-3.0,Database,Cakephp,Default,Cakephp 3.0,我正在尝试开始CakePHP。我制作了书签,并通过命令bin\cake server进行了测试。显示一个错误,因为无法建立到数据库的连接: SQLSTATE[HY000][1045]拒绝用户'my_app'@'localhost'的访问(使用密码:YES)。 我阅读了config/app.default.php文件。它说有一个数据库myu-app和另一个数据库test\u-myapp,有一些用户。我在xampp的phymyadmin中找不到这些数据库。我应该手动创建命名数据库和用户吗?我认为Ca

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

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


我阅读了
config/app.default.php
文件。它说有一个数据库
myu-app
和另一个数据库
test\u-myapp
,有一些用户。我在xampp的phymyadmin中找不到这些数据库。我应该手动创建命名数据库和用户吗?我认为CakePHP应该自动创建这些。或者我应该给出我喜欢的数据库名称等,并创建相同的名称。我在windows 7中使用xampp,我对CakePHP非常陌生。

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\u database\u name的数据库,然后添加一个名为my\u db\u user的数据库用户,密码为my\u db\u user\u password请参见Mysql.php:

类Mysql扩展了驱动程序 {

然后在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中的 创建蛋糕数据库。 就这些。

错误:

用户“我的应用程序”@“本地主机”的SQLSTATE[HY000][1045]访问被拒绝 (使用密码:是)

原因:

没有在config/app.php中设置密码为“secret”[或任何其他]的用户id:“my_app” 文件

解决方案:

如果是WAMP,请转到phpmyadmin页面,然后我们可以选择cake\u cms 数据库->权限->创建用户id和密码,与配置中相同 文件config/app.php,刷新页面。 现在应该显示出来了

CakePHP能够连接到数据库


编辑带有数据库连接参数的Config/app_local.php文件。您将找到主机、用户名、密码和数据库名称

不要使用数据库连接参数编辑config/app.php

您的问题现在将得到解决

CakePHP 4.x


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

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


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

我通过检查phpmyadmin顶部的端口解决了此问题
并在app_local.php的行下取消提交

'port' => '3308',

CakePHP3.9.3,app_local.php,'username`=>'root','password'=>'','database'=>'db name'

test_myapp是cakephp自己建立的一个测试数据库。非常感谢McWayWeb,特别是你详细的回答方式。你让它变得非常简单。你准确地判断了我的能力水平,并给出了一个简单的解释!我为cake和其他人添加了一个数据库对于测试。我还创建了一个具有一些权限的用户。我根据我创建的两个数据库更改了config.app.php中的值。仍然是bin\cake server命令给出了拒绝用户“my_app@”localhost(使用密码:YES)访问的错误。它甚至不应该使用名称“my_app”,因为我在config/app.php中更改了它,但它仍然存在。请帮助。我还按照cake docs的建议在第一个数据库中创建了4个表。我现在得到了它。我编辑了错误的app.php。我现在编辑了更高的app.php,它运行良好。它连接到了数据库。我很高兴。非常感谢。哪个应用程序。php文件您是否更改了?请在您的答案中添加一些解释,以便其他人可以从中学习
'port' => '3308',