предоставьте удаленный mysql доступ (через webmin или оболочку)

Спецификация: 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. То, что я сделал, редактирует "базу данных, управляют-> полномочия хоста" и делают его следующим образом:

enter image description here

Это, как предполагалось, предоставило удаленный mysql доступ, но он не работает. Также я читал из где-то в другом месте, что для предоставления удаленного mysql доступа я должен отредактировать /etc/mysql/my.cnf; Я думал что после того, как я редактирую "полномочия хоста" в webmin, этот файл был бы изменен, но это не было. С другой стороны, я не мог найти строки, в которых я, как предполагалось, отредактировал my.cnf, таким образом, я застреваю здесь.

Любая справка ценится.

3
задан 30 March 2016 в 03:30

1 ответ

Вход в систему 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)

6
ответ дан 1 December 2019 в 15:24

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

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