Щоб піддавати MySQL будь-чому, крім localhost, вам потрібно мати наступний рядок
Для MySQL версії 5.6 і нижче
не коментувати /etc/mysql/my.cnf
і призначати вашим комп’ютерам IP-адресу, а не зворотний зв’язок
Для MySQL версії 5.7 і вище
не коментувати /etc/mysql/mysql.conf.d/mysqld.cnf
і призначати вашим комп’ютерам IP-адресу, а не зворотний зв’язок
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
Або додайте a,
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)
Якщо наведене вище твердження повернеться правильно, ви зможете приймати віддалених користувачів. Однак для того, щоб віддалений користувач підключався до правильних привілеїв, вам потрібно створити цього користувача як у localhost, так і в '%', як у.
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 і мати проблеми з доступом. Якщо ви хочете обмежити доступ, який має мій користувач, вам доведеться прочитати синтаксис оператора GRANT ТУТ. Якщо ви пройдете все це і все ще матимете проблеми, опублікуйте додаткові вихідні дані про помилки та відповідні рядки my.cnf.
ПРИМІТКА: Якщо lsof не повертається або не знайдений, ви можете встановити його ТУТ на основі вашого дистрибутива Linux. Вам не потрібно lsof, щоб все працювало, але це надзвичайно зручно, коли все працює не так, як очікувалося.