cakephp error. Connection to database …not …: Access denied for user 'my_app'@'localhost' (using password: YES)

旧街凉风 提交于 2020-02-02 07:01:47

问题


I am trying to start CakePHP. I made bookmarker and tested by command bin\cake server. It showed one error as connection to database could not be established:

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

I read the config/app.default.php file. It says there is a database my_app and another database test_myapp with some users. I can not find these databases in phymyadmin in xampp. Am I supposed to create the named databases and users manually? I thought CakePHP should create these automatically. Or should I give names of databases etc. which I like and create the same.I'm using xampp with windows 7 and am very new to CakePHP.


回答1:


Cake will not create the database or database user for you. You need to create them yourself and then match these database credentials into the db config file. Your datasource in app/Config/app.php file should look something similar to:

'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,
    ]
],

In this example you would have to create a database named: cake_database_name, and then add a database user named my_db_user with the password of my_db_user_password.




回答2:


See in Mysql.php:

class Mysql extends 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' => [],
];

Then in app.php write

            '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,

...],

In phpMyAdmin create cake database. It's all.




回答3:


Error:

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

Reason:

No user id: "my_app" with password: "secret" [or any other] set in config/app.php file.

Solution:

In case of WAMP, go to phpmyadmin page, then we can select cake_cms database -> privilage-> create user id and password, same as in config file config/app.php, refresh the http://localhost:8765/ page. it should now show

CakePHP is able to connect to the database.



来源:https://stackoverflow.com/questions/30237702/cakephp-error-connection-to-database-not-access-denied-for-user-my-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!