Спецификация: Ubuntu 14.04 webmin/virtualmin 1.791
Я использую следующий код для тестирования удаленного mysql соединения с базой данных:
<?php
$db_host = "123.456.789";
$db_name = "database";
$db_user = "user";
$db_pass = "password";
$db_table_prefix = "prefix_";
GLOBAL $errors;
GLOBAL $successes;
$errors = array();
$successes = array();
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
GLOBAL $mysqli;
if(mysqli_connect_errno()) {
echo "Conn Error = " . mysqli_connect_error();
exit();
}
?>
Я продолжаю получать эту ошибку:
Никакая связь не могла быть установлена, потому что целевая машина активно отказалась от него.
Исследование показывает, что это означает, что сервер "не слушает". Прежде чем я запустил вышеупомянутый скрипт, я уже попытался предоставить удаленный mysql доступ через webmin gui. То, что я сделал, редактирует "базу данных, управляют-> полномочия хоста" и делают его следующим образом:
Это, как предполагалось, предоставило удаленный mysql доступ, но он не работает. Также я читал из где-то в другом месте, что для предоставления удаленного mysql доступа я должен отредактировать /etc/mysql/my.cnf
; Я думал что после того, как я редактирую "полномочия хоста" в webmin, этот файл был бы изменен, но это не было. С другой стороны, я не мог найти строки, в которых я, как предполагалось, отредактировал my.cnf
, таким образом, я застреваю здесь.
Любая справка ценится.
Вход в систему mysql mysql -u yourname -p yourpassword
, затем следуйте как это
mysql>use mysql;
mysql>select host,user from user;
Это может дать следующий результат:
+-----------+------------------+
| host | user |
+-----------+------------------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | debian-sys-maint |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
Если Вы видите, что, это означает, что можно только соединить mysql в localhost, таким образом, Вы должны сделать следующие шаги:
mysql>GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql>flush privileges;
Query OK, 0 rows affected (0.00 sec)
"%"
средства любой хост может удаленно войти в систему сервера, если Вы хотите ограничить доступ только к машине, необходимо измениться "%"
к IP-адресу машины Вы хотите позволить соединяться.
Если это работает, то Вы select host,user from user;
, Вы получите следующую информацию:
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | debian-sys-maint |
| localhost | root |
+-----------+------------------+
5 rows in set (0.00 sec)
Выйдите из mysql, редактирования /etc/mysql/my.cnf
, найти
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
аннотируйте его, или можно удалить его (не рекомендуемый), перезапустить mysql сервер, с помощьюservice mysql restart
, если Вы делаете это как я, можно решить проблему.
Это работает хорошо в моем компьютере (человечность 14.04+mysql 5.5)