我正在尝试启动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的新手。
答案 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)
答案 7 :(得分:0)
CakePHP3.9.3,app_local.php,'用户名'=>'根','密码'=>'','数据库'=>'数据库名'