Я установил 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 на цент ОС. После прохождения множества решений (предоставление всех привилегий, удаление привязок ip, включение сетей) проблема все еще не решалась.
Как оказалось, при поиске различных решений я наткнулся на iptables, который заставил меня понять, что порт mysql 3306 не принимает соединения.
Вот небольшая заметка о том, как я проверил и решил эту проблему.
telnet (ip сервера MySQL) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ПРИНЯТЬ
остановка сервиса iptables
Надеюсь это поможет.
Пожалуйста, следуйте приведенным ниже инструкциям, чтобы установить удаленный доступ с подстановочными символами для MySQL User.
(1) Открыть cmd.
(2) перейдите к пути C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin и выполните эту команду.
mysql -u root -p
(3) Введите пароль пользователя root.
(4) Выполните следующую команду, чтобы предоставить разрешение.
ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА *. * ИМЯ «ИМЯ ПОЛЬЗОВАТЕЛЯ» @ «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
Теперь наслаждайтесь удаленным входом
Просто к сведению, я несколько часов пытался справиться с этой проблемой ... наконец, я позвонил своему хостинг-провайдеру и обнаружил, что в моем случае используется облачный сервер, который на панели управления для 1 и 1 имеет дополнительный межсетевой экран, который необходимо клонировать и добавить порт. 3306. После добавления я получил прямо в ..
Этот блог Как настроить сервер MySQL в локальной сети будет полезен при настройке MySQL
с нуля
А для OS X люди должны знать, что параметр bind-address обычно устанавливается в plist launchd, а не в файле my.ini. Так что в моем случае я снял <string>--bind-address=127.0.0.1</string>
с /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Если mysqld
для адреса привязки установлено значение loopback / local address (например, 127.0.0.1
), сервер не будет доступен с удаленных хостов, поскольку с любого удаленного хоста невозможно получить доступ к интерфейсу loopback.
Установите эту опцию на 0.0.0.0
( ::
для IPv4 + 6), чтобы принимать соединения от любого хоста, или на другой внешне достижимый адрес, если вы хотите разрешить соединения только на одном интерфейсе.
Включение удаленного корневого доступа может быть опасным. Было бы предпочтительнее, если бы вы настраивали учетные записи пользователей с более строгими разрешениями. Следующие три шага должны сделать это.
Убедитесь, что строка, начинающаяся с bind-address ...
, по крайней мере закомментирована в вашем файле my.ini или my.cnf. Если его не существует, двигайтесь дальше. Вы можете найти этот файл в C:\ProgramData\MySQL\MySQL Server 8.0
Windows.
После этого убедитесь, что учетная запись пользователя, с которой вы устанавливаете соединение, не localhost
указана в поле «Соответствие хостам». Хотя это и не рекомендуется, вместо этого вы можете указать %
это поле для целей тестирования. Это можно сделать, открыв локальное подключение к серверу с помощью MySQL Workbench, затем перейдя в меню «Сервер> Пользователи и привилегии» в строке меню и найдя учетную запись пользователя, к которой вы хотите подключиться.
Поле «Limit to Hosts Matching» - это то, что запрещает вам подключаться не локально. Т.е. это ограничивает принятые соединения шаблоном IP-адресов. В идеале вы должны получать доступ к серверу MySQL со статического IP-адреса или подсети, чтобы вы могли быть настолько ограничены, насколько это возможно.
иногда нужно использовать имя компьютера на Windows
первый шаг) поместите в конфигурационный файл mysql:
mysqld.cnf SET bind-address = 0.0.0.0
(чтобы позволить recibe соединения через TCP / IP)
второй шаг) сделать пользователя в mysql, таблицах пользователей, с именем компьютера в Windows , не IP