MySQL 5.1.31 работает на Windows XP.
С локального сервера MySQL (192.168.233.142) я могу подключиться как root следующим образом:
>mysql --host=192.168.233.142 --user=root --password=redacted
С удаленной машины (192.168.233.163) я вижу, что порт mysql открыт:
# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
Но при попытке подключиться к mysql с удаленной машины я получаю:
# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)
У меня есть только 2 записи в mysql.user:
Host User Password
--------------------------------------
localhost root *blahblahblah
% root [same as above]
Что еще мне нужно сделать, чтобы включить удаленный доступ?
РЕДАКТИРОВАТЬ
Как предложено Пауло ниже, я попытался заменить запись mysql.user для% на запись, специфичную для IP, поэтому моя таблица пользователей теперь выглядит так:
Host User Password
------------------------------------------
localhost root *blahblahblah
192.168.233.163 root [same as above]
Затем я перезапустил машину, но проблема сохраняется.
PASSWORD
пароль учетной записи. Я попытался выше только измененияUSERNAME
иIP
и он не работает для меня , пока я не изменилPASSWORD
.Я получал ту же ошибку после предоставления удаленного доступа, пока я не сделал это:
Из
/etc/mysql/my.cnf
В более новых версиях MySQL расположение файла
/etc/mysql/mysql.conf.d/mysqld.cnf
(закомментировать эту строку:
bind-address = 127.0.0.1
)Тогда беги
service mysql restart
.источник
bind-address
не сработало для меня. Либоbind-address = 0.0.0.0
илиbind-address = <server_ip>
работает.По умолчанию в MySQL сервер удаленного доступа отключен. Процесс предоставления удаленного доступа пользователю.
PATH
mysql -uroot -proot
(или любой другой пароль root).mysql>
Здесь IP - это IP-адрес, для которого вы хотите разрешить удаленный доступ, если мы
%
любой IP-адрес, можно получить удаленный доступ.Пример:
Это для другого пользователя.
Надеюсь, это поможет
источник
0 rows affected
это норма :) Кроме того,service mysqld restart
рекомендуется в конце. [mysqld
иногда простоmysql
]Помощь Пауло приводит меня к решению. Это была комбинация следующего:
Оболочка bash рассматривает знак доллара как специальный символ для расширения до переменной среды, поэтому мы должны экранировать его обратной косой чертой. Между прочим, нам не нужно делать это в случае, когда знак доллара является последним символом пароля.
Например, если ваш пароль «pas $ word», из Linux bash мы должны подключиться следующим образом:
источник
mysql --host=192.168.233.142 --user=root --password='pas$word'
stackoverflow.com/a/6697781/500942У вас есть брандмауэр? убедитесь, что порт 3306 открыт.
В windows по умолчанию создается корневая учетная запись mysql, которой разрешен доступ только с локального хоста, если вы не выбрали опцию, чтобы разрешить доступ с удаленных компьютеров во время установки.
создание или обновление нужного пользователя с «%» в качестве имени хоста.
пример :
источник
Попробуй еще
flush privileges
раз.Попробуйте перезагрузить сервер, чтобы перезагрузить гранты.
Попробуйте создать пользователя с хостом "192.168.233.163". «%», кажется, не позволяет всем (это странно)
источник
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
В моем случае я пытался подключиться к удаленному серверу mysql на цент ОС. После прохождения многих решений (предоставление всех привилегий, удаление привязок ip, включение сетей) проблема все еще не решалась.
Как оказалось, при поиске различных решений я натолкнулся на iptables, который заставил меня понять, что порт mysql 3306 не принимает соединения.
Вот небольшая заметка о том, как я проверил и решил эту проблему.
Проверка, принимает ли порт соединения:
telnet (ip сервера mysql) [номер_порта]
Добавление правила таблицы ip для разрешения подключений к порту:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ПРИНЯТЬ
Не рекомендую это для производственной среды, но если ваши iptables не настроены должным образом, добавление правил может не решить проблему. В этом случае должно быть сделано следующее:
остановка сервиса iptables
Надеюсь это поможет.
источник
если вы используете динамический ip, просто предоставьте доступ к 192.168.2.%, так что теперь вам не нужно беспокоиться о предоставлении доступа к вашему ip-адресу каждый раз.
источник
Я боролся с удаленным входом в MYSQL для моего экземпляра Amazon EC2 Linux. Было найдено решение, чтобы убедиться, что моя группа безопасности включила входящее правило для порта MySQL 3306, чтобы включить мой IP-адрес (или 0.0.0.0/0 для любого места). Сразу могу подключиться удаленно, как только я добавлю это правило.
источник
Новое местоположение для конфигурационного файла mysql
источник
Драйвер MySQL ODBC 3.51 заключается в том, что специальные символы в пароле не обрабатываются.
«Предупреждение. У вас может возникнуть серьезная головная боль с MySQL ODBC 3.51, если пароль в вашей команде GRANT содержит специальные символы, такие как! @ # $% ^?. Драйвер ODBC MySQL 3.51 ODBC не поддерживает эти специальные символы в поле пароля. Единственное сообщение об ошибке, которое вы получите, - «Отказано в доступе» (с использованием пароля: ДА) »- http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
источник
Комбинация пользователь / хост может быть создана без пароля.
Я предполагал, что при добавлении нового хоста для существующего пользователя (с помощью приложения с графическим интерфейсом) существующий пароль также будет использоваться для новой комбинации пользователь / хост.
Я мог войти с
локально, но не из IPADDRESS с
(Я мог бы войти в систему с IPADDRESS без пароля)
Установка пароля разрешенного доступа:
источник
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
которая привела меня к этой статье: knowmysql.blogspot.com/2013/09/… После выполнения этих шагов я смог наконец подключиться к серверу.