Невозможно соединить базу данных с Yii Framework - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь запустить приложение на удаленном сервере, а затем подключить это веб-приложение через браузер моего компьютера.При подключении к базе данных возникла ошибка.

Сообщение об ошибке: CDbConnection failed to open the DB connection: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES).

Я нашел много решений для ее решения и пробовал, но ничего не помогает.

Текущая версия - Ubuntu 18.04, версия nginx nginx/1.14.0 (Ubuntu), версия php 5.6.40, версия mysql 5.7.24 и используемая версия yii 1.1.19.Весь этот стек установлен на удаленном сервере.

То, что я пробовал до сих пор;Я проверил, что пользователь существует.SELECT user, host FROM mysql.user;

    | user              | host          |
    +-------------------+---------------+
    | root              | 127.0.0.1     |
    | root              | localhost     |
    +-------------------+---------------+

и все в порядке.

Я проверил запущенный порт mysql.

 mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
 +---------------+-------+
 | Variable_name | Value |
 +---------------+-------+
 | port          | 3306  |
 +---------------+-------+

Я проверил грантпривилегии;

mysql> SHOW GRANTS  For root@localhost;
+----------------------------------------------------------------+
| Grants for root@localhost                                            
|
+----------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION                     
| GRANT SELECT ON `root`.* TO 'root'@'localhost'            
|GRANT ALL PRIVILEGES ON `xxxx`.* TO 'root'@'localhost'
| GRANT SELECT ON `xxxx`.* TO 'root'@'localhost'   
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION     |
+------------------------------------------------------------------+


mysql> SHOW GRANTS FOR CURRENT_USER();
+-----------------------------------------------------------------+
| Grants for root@127.0.0.1                                       |
+-----------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION  
|
| GRANT ALL PRIVILEGES ON `xxxx`.* TO 
'root'@'127.0.0.1' |
+----------------------------------------------------------------------+

На стороне php некоторые файлы разделены средой.Например: development.php, test.php.

У меня есть триггер для запуска development.php, и он содержит строку подключения:

 db' => array(
 'connectionString' => 'mysql:host=127.0.0.1;dbname=xxxx',
         'enableParamLogging' => $profiling,
         'enableProfiling' => $profiling,
         'schemaCachingDuration' => 0,
     ),

имя пользователя и пароль, загруженные другим файлом phpвот так:

 'db' => array(
         'class' => 'DbConnection',
         'emulatePrepare' => true,
         'username' => 'root',
         'password' => 'xxxx',
         'charset' => 'utf8',
         'schemaCachingDuration' => 7200,

     ),

Все кажется нормальным.Я также могу подключить терминал mysql для этого пользователя и пароль следующим образом: mysql -u root -p -h 127.0.0.1

Но когда я набираю URL в браузере, он выдает: CDbConnection failed to open the DB connection: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) ошибку, и я не смог найти способ решитьэто.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Возможно, пытаюсь использовать localhost вместо 127.0.0.1

return array(
    'class'              => 'CDbConnection',
    'connectionString'   => "mysql:host=localhost;dbname=xxxxx;port=3306",
    'emulatePrepare'     => true,
    'username'           => 'root',
    'password'           => 'xxxx',
    'charset'            => 'utf8',
    'enableProfiling'    => true,
    'enableParamLogging' => true
);
0 голосов
/ 12 июня 2019

добавьте следующие строки и убедитесь, что сервер XAMMP MySql запущен или нет (иногда xammp подключал другую базу данных).

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=xxx',
    'username' => 'root',
    'password' => 'xxx',
    'charset' => 'utf8',
];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...