Чтобы предоставить MySQL кому-либо другому, кроме localhost, вам понадобится следующая строка
Для mysql версии 5.6 и ниже
раскомментированный /etc/mysql/my.cnf
и назначенный вашим компьютерам IP-адрес, а не loopback
Для mysql версии 5.7 и выше
раскомментированный /etc/mysql/mysql.conf.d/mysqld.cnf
и назначенный вашим компьютерам IP-адрес, а не loopback
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
Или добавьте,
bind-address = 0.0.0.0
если вы не хотите указывать IP
Затем остановите и перезапустите MySQL с новой записью my.cnf. После запуска перейдите к терминалу и введите следующую команду.
lsof -i -P | grep :3306
Это должно получиться примерно так с вашим фактическим IP-адресом в xxx
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
Если приведенный выше оператор вернется правильно, вы сможете принимать удаленных пользователей. Однако для того, чтобы удаленный пользователь мог подключиться с правильными привилегиями, вам необходимо, чтобы этот пользователь был создан как на локальном хосте, так и в '%', как в.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
затем,
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
и наконец,
FLUSH PRIVILEGES;
EXIT;
Если у вас нет такого же пользователя, как указано выше, при локальном входе в систему вы можете унаследовать базовые привилегии localhost и иметь проблемы с доступом. Если вы хотите ограничить доступ myuser, вам нужно будет прочитать синтаксис оператора GRANT ЗДЕСЬ. Если вы прошли через все это, но у вас все еще остались проблемы, опубликуйте дополнительный вывод ошибок и соответствующие строки my.cnf.
ПРИМЕЧАНИЕ. Если lsof не возвращается или не обнаруживается, вы можете установить его ЗДЕСЬ в зависимости от вашего дистрибутива Linux. Вам не нужен lsof для работы, но он очень удобен, когда что-то работает не так, как ожидалось.