Я настраиваю удаленное соединение с сервером MySQL, но что бы я ни пытался, я получаю ошибку отказа в доступе с удаленного сервера.
Я добавил пользователя:
CREATE USER 'username'@'REMOTE_IP_ADDRESS' IDENTIFIED BY '***';
Потом дал разрешения:
GRANT ALL PRIVILEGES ON databasename.* to username@REMOTE_IP_ADDRESS;
Моя таблица пользователей на сервере MySQL показывает (среди прочего):
+---------------+--------------------+
| user | host |
+---------------+--------------------+
| username | REMOTE_IP_ADDRESS |
+---------------+--------------------+
Если я покажу гранты пользователю, я получу:
+------------------------------------------------------------------------------------+
| Grants for username@REMOTE_IP_ADDRESS
+------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'REMOTE_IP_ADDRESS' IDENTIFIED BY PASSWORD '***'
| GRANT ALL PRIVILEGES ON `databasename`.* TO 'username'@'REMOTE_IP_ADDRESS'
+------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Затем на удаленном сервере я использую:
mysql -u username -p DB_SERVER_IP
и получите сообщение об ошибке:
ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
Я выполнил «сброс привилегий», но все еще не могу подключиться - я заметил, что это ошибка username @ localhost, и у меня нет никаких разрешений, установленных для username @ localhost, но мне никогда не приходилось делать это раньше. У меня есть несколько других удаленных учетных записей на том же сервере, и ни у одной из них нет @localhost, поскольку они подключаются только локально.
Что мне не хватает? Я что-то забыл сделать или что еще можно проверить?
Сообщение об ошибке указывает, что вы вообще подключаетесь не к удаленному MySQL, а к localhost. Убедитесь, что вы подключаетесь с помощью опции -h
на удаленный сервер.
mysql -u username -h DB_SERVER_IP
Для простоты скажем так:
Компьютер A = содержит базу данных MySQL. IPv4 = 192.168.11.1
Компьютер B = имеет программу Eclipse, которая хочет подключиться к компьютеру A и выполнять какие-либо действия со схемами. IPv4 = 192.168.22.2
Сделайте следующее на компьютере A:
Похоже, вы пытаетесь создать нового пользователя с именем 'username'@'192.168.22.2', но другой пользователь с именем 'username' @ 'localhost' мешает / имеет приоритет.
Выполните эту команду, чтобы увидеть пользователей:
SELECT user,host FROM mysql.user;
Вы должны увидеть две записи:
1) пользователь = имя пользователя, хост = локальный хост
2) пользователь = имя пользователя, хост = 192.168.22.2
Так что сделайте эти команды:
DROP User 'username'@'localhost';
DROP User 'username'@'192.168.22.2';
Обратите внимание: если вы видите 'username' @ '%' user, также удалите / удалите эту строку.
Перезапустите MySQL Workbench
Затем снова выполните исходные команды:
CREATE USER 'username'@'192.168.22.2' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'192.168.22.2';
Я не понимаю, почему вы использовали «***» в качестве пароля, поэтому я заменил его на «пароль».
Затем перейдите на компьютер B и откройте командную строку / терминал. Введите следующее, и вы должны быть подключены к компьютеру A. Если вы не можете подключиться, проверьте входящие правила брандмауэра компьютера A и проверьте, запущена ли служба MySQL на компьютере A.
mysql --host=192.168.11.1 --user=username --password=password
(Убедитесь, что у вас установлен mysql в качестве переменной среды, иначе командная строка не поймет команду mysql)
Полезные методы устранения неполадок: отключите все правила брандмауэра на компьютере A. В командной строке / терминале компьютера B выполните команду ping 192.168.11.1 или telnet 192.168.11.1 3306.
Вам нужно будет добавить пользователя localhost отдельно. Вы можете сделать это одной командой (а не двумя).
GRANT ALL on database.* to 'user'@'localhost' identified by 'paswword';
Если вы хотите добавить пользователя, чтобы он мог подключаться из любого места (менее безопасно), используйте это:
GRANT ALL on database.* to 'user'@'%' identified by 'password';
НАКОНЕЧНИК:
закомментируйте pid и файл сокета, если вы не можете подключиться к серверу .. mysql может подключаться с неправильным pid и / или файлом сокета, поэтому, когда вы пытаетесь подключиться к серверу через командную строку, он "выглядит" в неправильном файле pid / socket ...
### comment out pid and socket file, if you can't connect to server..
#pid-file=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.sock