У меня есть серверы 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 также принимал подключения из-за локального хоста.
Вы можете предоставить пользователю все необходимые права, используя следующую команду:
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();
}
Вы можете предоставить пользователю все необходимые права, используя следующую команду:
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();
}
Вы можете предоставить пользователю все необходимые права, используя следующую команду:
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();
}