Доступ к базе данных через PHP извне сервера

У меня есть серверы VPS, работающие на серверах apache и mysql. В основном, я обновляю свою базу данных с веб-сайта, который также размещен на том же сервере, поэтому, когда я подключаюсь к базе данных через PHP файлы, я использую 127.0.0.1, чтобы сделать соединение, и я могу подключиться и вставить строки

Однако в последнее время я попытался подключить и вставить строки в мою базу данных с помощью скрипта php, который находится за пределами сервера и находится на другом VPS, и я получил следующую ошибку. ( ! ) Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in C:\wamp64\www\test.php on line 13

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

0
задан 18 September 2017 в 10:07

3 ответа

Вы можете предоставить пользователю все необходимые права, используя следующую команду:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY 'your_pass'
WITH GRANT OPTION;
FLUSH PRIVILEGES;`

% означает все хосты, чтобы указанный пользователь мог получить доступ к базе данных с любого ip-адреса. Вы можете указать свой собственный ip-адрес, если у вас есть собственный.

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

sudo ufw allow 3306/tcp
sudo service ufw restart

Затем, наконец, не забудьте отредактировать my.cnf в вашей системе, которая находится в /etc/mysql/my.cnf, если вы используете Ubuntu. откройте файл, используя ваш любимый текстовый редактор: например, nano: sudo nano /etc/mysql/my.cnf, затем добавьте следующее:

[mysqld] 
bind-address= your-server-ip-address
#skip-networking

Сохраните файл и выйдите. Не забудьте затем запустить sudo systemctl restart mysql

. Вы можете проверить свою работу, используя этот скрипт php

<?php
$dbname = 'dbname';
$dbuser = 'db_user';
$dbpass = 'db_pass';
$dbhost = 'your-server-ip-address';

try {
   $connection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, 
   $dbpass);

 $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   echo "Connected successfully"; 
 }
catch(PDOException $e)
   {
     echo "Connection failed: " . $e->getMessage();
   }
2
ответ дан 22 May 2018 в 18:22

Вы можете предоставить пользователю все необходимые права, используя следующую команду:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_pass' WITH GRANT OPTION; FLUSH PRIVILEGES;`

% означает все хосты, чтобы указанный пользователь мог получить доступ к базе данных с любого ip-адреса. Вы можете указать свой собственный ip-адрес, если у вас есть собственный.

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

sudo ufw allow 3306/tcp sudo service ufw restart

Затем, наконец, не забудьте отредактировать my.cnf в вашей системе, которая находится в /etc/mysql/my.cnf, если вы используете Ubuntu. откройте файл, используя ваш любимый текстовый редактор: например, nano: sudo nano /etc/mysql/my.cnf, затем добавьте следующее:

[mysqld] bind-address= your-server-ip-address #skip-networking

Сохраните файл и выйдите. Не забудьте затем запустить sudo systemctl restart mysql

. Вы можете проверить свою работу, используя этот скрипт php

<?php $dbname = 'dbname'; $dbuser = 'db_user'; $dbpass = 'db_pass'; $dbhost = 'your-server-ip-address'; try { $connection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); }
2
ответ дан 18 July 2018 в 06:39

Вы можете предоставить пользователю все необходимые права, используя следующую команду:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_pass' WITH GRANT OPTION; FLUSH PRIVILEGES;`

% означает все хосты, чтобы указанный пользователь мог получить доступ к базе данных с любого ip-адреса. Вы можете указать свой собственный ip-адрес, если у вас есть собственный.

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

sudo ufw allow 3306/tcp sudo service ufw restart

Затем, наконец, не забудьте отредактировать my.cnf в вашей системе, которая находится в /etc/mysql/my.cnf, если вы используете Ubuntu. откройте файл, используя ваш любимый текстовый редактор: например, nano: sudo nano /etc/mysql/my.cnf, затем добавьте следующее:

[mysqld] bind-address= your-server-ip-address #skip-networking

Сохраните файл и выйдите. Не забудьте затем запустить sudo systemctl restart mysql

. Вы можете проверить свою работу, используя этот скрипт php

<?php $dbname = 'dbname'; $dbuser = 'db_user'; $dbpass = 'db_pass'; $dbhost = 'your-server-ip-address'; try { $connection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); }
2
ответ дан 24 July 2018 в 18:38

Другие вопросы по тегам:

Похожие вопросы: