MySQL привилегии часто предоставляются на пользователя и на IP-адрес клиентского хоста (клиент с точки зрения базы данных - это хост, на котором работает ваше PHP-приложение).
Ваш маршрутизатор Wi-Fi, вероятно, выделяет IP-адрес вашего ноутбука с помощью DHCP, поэтому нет гарантии, что он будет предоставлять такой же адрес вашему ноутбуку при каждом обновлении соединения.
Я вижу два возможных лекарства:
Некоторые маршрутизаторы позволяют вам привязывать определенный IP-адрес к данному MAC-адресу, чтобы один ПК надежно получал тот же IP-адрес (это то, что я делаю в своей домашней сети).
Или вы можете открыть привилегии на сервере базы данных с помощью оператора GRANT
, чтобы любой IP-адрес в диапазоне адресов DHCP, обслуживаемых вашим маршрутизатором, мог получить доступ к базе данных. Пример:
GRANT ALL ON test.* TO 'databaseuser'@'192.168.1.%' IDENTIFIED BY 'databasepassword';
Вы не хотите предоставить открытый доступ к любому IP-адресу, однако, потому что тогда любой в более широкой сети может потенциально связаться с вашим сервером базы данных.
update: Конечно, 192.168.1.% - это внутренняя подсеть, которую вы будете использовать за брандмауэром. Это всего лишь пример, показывающий, что вы можете использовать подстановочные знаки для любого октета в адресе, который вы указали в своем выражении GRANT
.
Если вы подключаетесь из дома, у вас, вероятно, есть один внешний IP-адрес , который назначает ваш интернет-провайдер, но это может часто меняться в зависимости от их политики управления сетью. У вас может быть возможность получить статический IP-адрес, который гарантированно не изменится, но обычно это стоит дороже.
Конечно, если вы подключаетесь из кафе, аэропорта или чего-то еще, ваше подключение будет выглядеть как их внешний IP-адрес.
Конечно, было бы наиболее гибко открыть ваши привилегии MySQL, чтобы любой клиент с любого IP-адреса мог подключиться (при условии, что они знают имя пользователя и пароль). Но проблема с этим планом заключается в том, что любой клиент с любого IP-адреса может подключиться , т. Е. Даже если это не вы.