Включить удаленное соединение с MySQL: ERROR 1045 (28000): доступ запрещен для пользователя
MySQL 5.1.31 работает в Windows XP.
На сервере локальный MySQL (192.168.233.142) я могу подключиться как root следующим образом:
>mysql --host=192.168.233.142 --user=root --password=redacted
На машине remote (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 с машины remote, я получаю:
# 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]
Затем я перезапустил машину, но проблема не устранена.
Ответы
Ответ 1
Пауло помогает привести меня к решению. Это было сочетание следующего:
- пароль содержит знак доллара
- Я пытался подключиться из оболочки Linux
Оболочка bash рассматривает знак доллара как особый символ для расширения переменной среды, поэтому нам нужно избегать его с помощью обратного слэша. Кстати, нам не нужно делать это в случае, когда знак доллара является окончательным символом пароля.
Например, если ваш пароль "pas $ word", из Linux bash мы должны подключиться следующим образом:
# mysql --host=192.168.233.142 --user=root --password=pas\$word
Ответ 2
Вы должны положить это как root:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD' with grant option;
;
где IP - это IP-адрес, который вы хотите разрешить, USERNAME - это пользователь, которого вы используете для подключения, а пароль - соответствующий пароль.
Если вы хотите разрешить доступ с любого IP-адреса, просто введите %
вместо вашего IP-адреса
и тогда вам остается только положить
FLUSH PRIVILEGES;
Или перезапустите сервер mysql и его.
Ответ 3
Я получал ту же ошибку после предоставления удаленного доступа, пока не сделал это:
Из /etc/mysql/my.cnf
В новых версиях mysql расположение файла: /etc/mysql/mysql.conf.d/mysqld.cnf
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
(прокомментируйте эту строку: bind-address = 127.0.0.1
)
Затем запустите service mysql restart
.
Ответ 4
По умолчанию в MySQL сервер удаленный доступ отключен. Процесс предоставления удаленного доступа пользователю.
- Перейдите в мою папку sql bin или добавьте ее в
PATH
- Войдите в root с помощью
mysql -uroot -proot
(или любого другого пароля root.)
- При успехе вы получите
mysql>
- Предоставить доступ для всех пользователей.
GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password';
Здесь IP - это IP-адрес, для которого вы хотите разрешить удаленный доступ, если мы поместим %
, любой IP-адрес может получить доступ удаленно.
Пример:
C:\Users\UserName> cd C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin
C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>mysql -uroot -proot
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.27 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.25 sec)
Это для другого пользователя.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'testUser'@'%' IDENTIFIED BY 'testUser';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Надеюсь, это поможет
Ответ 5
У вас есть брандмауэр? убедитесь, что порт 3306 открыт.
В окнах по умолчанию создается пользовательская учетная запись mysql, которой разрешен доступ с локального хоста, только если вы не выбрали опцию включения доступа с удаленных компьютеров во время установки.
создание или обновление желаемого пользователя с помощью "%" в качестве имени хоста.
пример:
CREATE USER 'krish'@'%' IDENTIFIED BY 'password';
Ответ 6
-
Повторите попытку flush privileges
.
-
Попробуйте перезагрузить сервер, чтобы перезагрузить гранты.
-
Попробуйте создать пользователя с хостом "192.168.233.163". "%", похоже, не позволяет всем (это странно)
Ответ 7
В моем случае я пытался подключиться к удаленному серверу mysql на cent OS. После прохождения большого количества решений (предоставление всех привилегий, удаление привязок ip, создание сетей) проблема все еще не решена.
Как оказалось, при просмотре различных решений я столкнулся с iptables, что заставило меня понять, что порт 3306 mysql не принимает соединения.
Вот небольшая заметка о том, как я проверил и разрешил эту проблему.
-
Проверка того, что порт принимает соединения:
telnet (mysql server ip) [portNo]
-
Добавление правила таблицы ip, чтобы разрешить подключения к порту:
iptables -A INPUT -i eth0 -p tcp -m tcp -dport 3306 -j ACCEPT
-
Не рекомендовал бы это для рабочей среды, но если ваши iptables не настроены должным образом, добавление правил может еще не решить проблему. В этом случае следует сделать следующее:
служба iptables stop
Надеюсь, что это поможет.
Ответ 8
если вы используете динамический ip, просто предоставляйте доступ к 192.168.2.%, поэтому теперь вам не нужно беспокоиться о предоставлении доступа к вашему ip-адресу каждый раз.
Ответ 9
Новое место для конфигурационного файла mysql
/etc/mysql/mysql.conf.d/mysqld.cnf
Ответ 10
Я боролся с удаленным входом в MYSQL для моего экземпляра Amazon EC2 Linux. Найденное решение состояло в том, чтобы убедиться, что моя группа безопасности включила правило входа для порта MySQL 3306 для включения моего IP-адреса (или 0.0.0.0/0 для любого места). Сразу же можно подключиться удаленно, как только я добавлю это правило.
Ответ 11
MySQL ODBC 3.51 Драйвер - это то, что специальные символы в пароле не обрабатываются.
"Предупреждение. У вас может быть серьезная головная боль с MySQL ODBC 3.51, если пароль в вашей команде GRANT содержит специальные символы, такие как! @# $% ^?. MySQL ODBC 3.51 ODBC Driver не поддерживает эти специальные символы в пароль. Единственное сообщение об ошибке, которое вы получите, -" Доступ запрещен "(с использованием пароля: ДА)" - от http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
Ответ 12
Комбинация пользователя/хоста может быть создана без пароля.
Я предполагал, что при добавлении нового хоста для существующего пользователя (с использованием приложения GUI) существующий пароль также будет использоваться для новой комбинации пользователя/хоста.
Я могу войти в систему с помощью
mysql -u username -p PASSWORD
локально, но не из IPADDRESS с
mysql -u --host=HOST -p PASSWORD
(я действительно мог войти в систему из IPADDRESS без использования пароля)
mysql -u --host=HOST
Настройка доступа к паролю:
set password for '<USER>'@'<IPADDRESS>' = '<PASSWORD>';