На моїй локальній машині я встановив 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.0
Windows.
Після цього переконайтеся, що обліковий запис користувача, з яким ви встановлюєте зв’язок, не має localhost
у полі Обмеження до хостів. Хоча це не рекомендується, ви можете замість цього поставити %
це поле для тестування. Це можна зробити, відкривши локальне підключення до сервера за допомогою MySQL Workbench, потім перейдіть до сервера> Користувачі та привілеї на панелі меню та знайдіть обліковий запис користувача, з яким потрібно підключитися.
Поле "Ліміт узгодження хостів" - це те, що не дозволяє вам підключатися не локально. Тобто це обмежує прийняті з'єднання схемою IP-адрес. В ідеалі вам слід отримати доступ до сервера MySQL зі статичної IP-адреси або підмережі, щоб ви могли бути максимально обмежуючими.