База данных не подключена к производственной среде

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

производственная сборка - 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

это может войти в локальный хост

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


person soldier    schedule 26.10.2019    source источник


Ответы (1)


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

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

mysql -u root -p

Если будет спрашивать пароль.

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

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

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

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

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

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

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

Я надеюсь, что это помогает!

person tano    schedule 26.10.2019