用户'root'@'localhost'的访问被拒绝但在本地工作

时间:2017-10-30 14:00:47

标签: php mysql cakephp mariadb mariasql

我正在尝试在我的虚拟机上部署我的cakephp项目。

当我在我的VM上键入mysql -u root -p时,它可以正常工作,但是cakephp似乎无法访问它。

以下是我的数据库配置的样子:

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => '127.0.0.1',
        //'port' => 'non_standard_port_number',
        'username' => 'root',
        'password' => '',
        'database' => 'webarena',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'flags' => [],
        'cacheMetadata' => true,
        'log' => false,
        'quoteIdentifiers' => false,
        'url' => env('DATABASE_URL', null),
    ],

我遇到以下错误:

SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'

所以我尝试设置一个新密码:

mysql> UPDATE mysql.user SET Password=PASSWORD('SecurePassword') WHERE
User='root';
mysql> FLUSH PRIVILEGES;
mysql> EXIT

但仍然无效。

我也可以输入mysql,它有效吗?怎么可能?

1 个答案:

答案 0 :(得分:0)

你的问题不清楚,尤其是标题词" local"。我的答案遵循一种解释; BenRoob" dup of"跟随另一个。

"本地主机"是一个不同的主持人"来自具有IP地址或主机名的人。 GRANT表格有所区别。我认为你正在绊倒这个。

    GRANT ... to 'user'@'localhost' ...

user相同的计算机运行时进入。 '127.0.0.1''::'可能是'localhost'的同义词。

    GRANT ... to 'user'@'%' ...

user从任何其他计算机进入。 (出于安全原因,不建议使用'%')