База данных не связана с производственной средой - PullRequest
0 голосов
/ 26 октября 2019

Установка на производственном сервере digitalocean's Ubuntu 18.04

Производственная сборка - dist
php fpm php7.2, mysql-server 5.7, nginx, root @ prod

Самая первая установленная мной mysql-сервер на капельке Ubuntu в соответствии с этим сайтом. https://support.rackspace.com/how-to/installing-mysql-server-on-ubuntu/

root - это мое имя пользователя для дроплета, и всякий раз, когда я набираю mysql на терминале, он просто запрашивает, не спрашивая пароль для оболочки mysql

в моем файле env.phpупомянул мое соединение с базой данных, как это

<?php
    $mysql_hostname = "localhost";
    $mysql_user = "root";
    $mysql_password = "123qwer";
    $mysql_database = "xp";
    $mysql_port="3306"; 


 $conn = mysqli_connect($mysql_hostname, $mysql_user,
    $mysql_password, $mysql_database,$mysql_port);


if (mysqli_connect_errno()) {
    echo "Failed to connect to database: " . mysqli_connect_error();
}

, после этого я развернул производственную сборку в соответствующем корневом каталоге nginx, и он обслуживает мой веб-сайт, но когда я проверял соединение с базой данных в браузере проверки, я вижу эту ошибку

Failed to connect to database: Access denied for user 'root'@'localhost'

но когда я пытаюсь это сделать на моем сервере Ubuntu

ssh root @ localhost, пароль - 123qwer

, это может войти в систему с localhost

что такоепроблема с моим сайтом, пожалуйста, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 26 октября 2019

Вы должны создать пользователя для root @ localhost в вашей базе данных и добавить к нему доступ на чтение / запись.

используйте оболочку mysql на вашем сервере. следует использовать sudo. login:

mysql -u root -p

If запросит пароль.

команды: вы можете создать или заменить, если пользователя не существует. Вы можете изменить его, если он существует, если вы не знаете его пароль. Я предполагаю, что он существует, поэтому вы можете пропустить этот шаг.

CREATE OR REPLACE USER 'root'@'localhost'
  IDENTIFIED BY 'password';

Добавить привилегии для всей базы данных. Вы также можете добавить один конкретный.

GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

У меня есть Mariadb, может быть какая-то разница. Вы можете использовать это для mysql, если вышеописанное не работает.

GRANT ALL PRIVILEGES ON database_name.* TO 'root'@'localhost';

Я не могу вспомнить, должен или не должен быть перезапущен демон mysql.

Надеюсь, это поможет!

...