Я создал пользователя и предоставил ему полный доступ, но MySQL все еще отказывает в доступе этому пользователю - почему?
Создать пользователя:
create user 'myUser'@'Mikes-MacBook-Air.local' identified by 'account_password'
Предоставьте привилегии всем базам данных:
grant all privileges on *.* to 'myUser'@'Mikes-MacBook-Air.local' identified by 'account_password' with grant option
Подтвержденный грант:
show grants for 'myUser'@'Mikes-MacBook-Air.local'
MySQL работает (проверено) на машине с IP 192.168.0.2, а клиент подключается с машины с IP 192.168.0.3. Я даже создал учетную запись пользователя с IP-адресом в качестве домена:
Создать пользователя:
create user 'myUser'@'192.168.0.3' identified by 'account_password'
Предоставьте права всем базам данных:
grant all privileges on *.* to 'myUser'@'192.168.0.3' identified by 'account_password' with grant option
Подтвержденный грант:
show grants for 'myUser'@'192.168.0.3'
Я перезагрузил обе машины, проверенные IP-адреса не изменились и MySQL работает. Я могу получить доступ к этому серверу MySQL из Workbench без проблем с того же клиентского компьютера, но с разными учетными данными. Я также могу получить доступ к этому экземпляру MySQL с другого удаленного клиентского компьютера, где у пользователя есть аналогичная учетная запись MySQL с другим доменом компьютера.
После всего этого у меня все равно возникает исключение:
Exception: Access denied for user 'myUser'@'Mikes-MacBook-Air.local' (using password: YES)
Почему MySQL запрещает доступ?
у вас есть skip-resolv в my.cnf? В таком случае MySQL не будет проверять ACL с именами хостов.
В общем, избегайте использования имен хостов в MySQL ACL и всегда используйте IP или сеть. Затем добавьте skip-resolv в свою конфигурацию, у вас будет лучшая производительность соединения.
Он пытается подключиться, используя имя пользователя «Mikes-MacBook-Air.local» вместо «myUser». Какую точную команду вы используете для подключения, когда получаете сообщение об ошибке?