На моїй локальній машині я встановив MySQL Community Edition 5.5 і хочу дозволити віддалені з'єднання, щоб я міг підключитися із зовнішнього джерела.
Як я можу це зробити?
sudo mysql_secure_installation. FYI.
На моїй локальній машині я встановив MySQL Community Edition 5.5 і хочу дозволити віддалені з'єднання, щоб я міг підключитися із зовнішнього джерела.
Як я можу це зробити?
sudo mysql_secure_installation. FYI.
Відповіді:
Це дозволено за замовчуванням у MySQL.
Відключений доступ за замовчуванням - це віддалений rootдоступ. Якщо ви хочете включити це, запустіть цю команду SQL локально:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Потім знайдіть наступний рядок і прокоментуйте його у своєму my.cnfфайлі, який зазвичай працює /etc/mysql/my.cnfв системах Unix / OSX. У деяких випадках місце для файлу /etc/mysql/mysql.conf.d/mysqld.cnf).
Якщо це система Windows, ви можете знайти її в каталозі інсталяції MySQL, як правило, щось подібне C:\Program Files\MySQL\MySQL Server 5.5\ і буде ім'ям файлу my.ini.
Змінити лінію
bind-address = 127.0.0.1
до
#bind-address = 127.0.0.1
І перезапустіть сервер MySQL ( Unix / OSX та Windows ), щоб зміни вступили в силу.
my.cnfфайл і не знаходить в ньому bind-addressдирективи, зауважте, що в моєму випадку (MySQL версія 14.14 на Ubuntu 16.04.2) місце для цього файлу було/etc/mysql/mysql.conf.d/mysqld.cnf
Зробивши все вище, я все ще не міг увійти як rootвіддалений, але Telnetting до порту 3306підтвердив, що MySQLприймає з'єднання.
Я почав переглядати користувачів у MySQL і помітив, що є кілька користувачів root із різними паролями.
select user, host, password from mysql.user;
Отже, MySQLя знову встановив усі паролі для root і, нарешті, міг віддалено увійти як root.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Лише замітка з мого досвіду, ви можете знайти конфігураційний файл під цим контуром /etc/mysql/mysql.conf.d/mysqld.cnf.
(Я деякий час боровся, щоб знайти цей шлях)
sudo find /etc -iname 'mysql*.cnf'
У моєму випадку я намагався підключитися до віддаленого сервера mysql на ОС OS. Після проходження багатьох рішень (надання всіх привілеїв, видалення ip-прив’язок, включення в мережу) проблема все ще не вирішувалася.
Як виявилося, переглядаючи різні рішення, я натрапив на iptables, завдяки чому я зрозумів, що порт mysql 3306 не приймає з'єднання.
Ось невеличка примітка про те, як я перевірив і вирішив цю проблему.
telnet (сервер mysql ip) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --portport 3306 -j ACCEPT
сервісні iptables зупиняються
Сподіваюсь, це допомагає.
Будь ласка, виконайте наведені нижче кроки, щоб встановити віддалений доступ до шаблону для користувача MySQL.
(1) Відкрити cmd.
(2) перейдіть до шляху C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin та запустіть цю команду.
mysql -u корінь -p
(3) Введіть корінний пароль.
(4) Для надання дозволу виконайте таку команду.
НАДАЙТЕ ВСІ ПРИВІЛЕГИ НА *. * ДО "USERNAME" @ "IP" ІДЕНТИФІКОВАНО "ПАРОЛЬНИМ СЛОВОМ";
USERNAME: Ім'я користувача, яке ви хочете підключити до сервера MySQL.
IP: публічна IP-адреса, звідки ви хочете дозволити доступ до сервера MySQL.
ПАРОЛЬ: пароль використовуваного імені користувача.
IP можна замінити на%, щоб дозволити користувачеві підключитися з будь-якої IP адреси.
(5) Очистіть переваги, дотримуючись команди та виходу.
ПРИГОТОВЛЕННЯ ПРИМІТКИ;
вихід; або \ q
Якщо ваш сервер MySQL прослуховує лише 127.0.0.1 або :: 1, тоді ви не зможете віддалено підключитися. Якщо у вас є bind-addressналаштування, /etc/my.cnfце може бути джерелом проблеми.
Вам також доведеться додати пільги і для некористувача localhost.
127.0.0.1?
Якщо ви встановили MySQL з brewнього, він дійсно слухає лише локальний інтерфейс за замовчуванням. Щоб виправити те, що вам потрібно відредагувати /usr/local/etc/my.cnfта змінити bind-addressз 127.0.0.1на *.
Потім бігайте brew services restart mysql.
Весь процес для віддаленого входу. Віддалений вхід за умовчанням вимкнено. Вам потрібно відкрити його вручну для всіх ip..для доступу до всіх ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Специфічний Ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
тоді
flush privileges;
Ви можете перевірити свій хост і пароль користувача
SELECT host,user,authentication_string FROM mysql.user;
Тепер ваш обов’язок змінити це
bind-address = 127.0.0.1
Ви можете знайти це на
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
якщо ви цього не знайдете, то спробуйте це
sudo nano /etc/mysql/my.cnf
коментар у цьому
#bind-address = 127.0.0.1
Потім перезапустіть Mysql
sudo service mysql restart
Тепер насолоджуйтесь віддаленим входом у систему
Просто FYI я витягнув волосся з цією проблемою годинами .. нарешті я зателефонував своєму хостинг-провайдеру і виявив, що в моєму випадку, використовуючи хмарний сервер, що на панелі керування для 1and1 у них є вторинний брандмауер, який потрібно клонувати та додати порт 3306. Після додавання я потрапив прямо у ..
Цей блог Як налаштувати MySQL-сервер у локальній мережі, буде корисним для налаштування MySQLз нуля
А для людей з OS X слід пам’ятати, що параметр bind-address зазвичай встановлюється у запущеному списку, а не у файлі my.ini. Тож у моєму випадку я зняв <string>--bind-address=127.0.0.1</string>з /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist.
~/Library/LaunchAgents
Якщо mysqldє прив'язка адреси набір до петлевий / локальну адресу (наприклад ,127.0.0.1 ), то сервер не буде доступний з віддалених хостів, так як інтерфейс зворотнього петлі не може бути досягнуто з будь-якого віддаленого хоста.
Установіть цей параметр на 0.0.0.0( ::для IPv4 + 6), щоб прийняти з'єднання з будь-якого хоста або до іншої зовнішньодоступної адреси, якщо ви хочете дозволити з'єднання лише на одному інтерфейсі.
кілька разів потрібно використовувати ім'я ПК на Windows
перший крок) введіть файл налаштування mysql:
mysqld.cnf SET bind-address = 0.0.0.0
(дозволити повторне з'єднання через tcp / ip)
другий крок) зробити користувача в mysql, користувачів таблиці, з ім'ям ПК на Windows propierties, НЕ ip
Увімкнення віддаленого кореневого доступу може бути небезпечним. Було б краще, якби ви створили облікові записи користувачів з більш обмеженими дозволами. Наступні три кроки повинні зробити це.
Переконайтеся, що рядок, що починається з bind-address ..., принаймні коментується у вашому файлі my.ini або my.cnf. Якщо його немає, рухайтеся далі. Цей файл можна знайти в C:\ProgramData\MySQL\MySQL Server 8.0Windows.
Після цього переконайтеся, що обліковий запис користувача, з яким ви встановлюєте зв’язок, не має localhost у полі Обмеження до хостів. Хоча це не рекомендується, ви можете замість цього поставити %це поле для тестування. Це можна зробити, відкривши локальне підключення до сервера за допомогою MySQL Workbench, потім перейдіть до сервера> Користувачі та привілеї на панелі меню та знайдіть обліковий запис користувача, з яким потрібно підключитися.
Поле "Ліміт узгодження хостів" - це те, що не дозволяє вам підключатися не локально. Тобто це обмежує прийняті з'єднання схемою IP-адрес. В ідеалі вам слід отримати доступ до сервера MySQL зі статичної IP-адреси або підмережі, щоб ви могли бути максимально обмежуючими.