Я создал пользователя и предоставил этому пользователю полный доступ, но 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 запрещает доступ?
Он пытается подключиться, используя имя пользователя «Mikes-MacBook-Air.local» вместо «myUser».Какую точную команду вы используете для подключения, когда получаете сообщение об ошибке?
у вас есть skip-resolv в my.cnf? В таком случае MySQL не будет проверять ACL с именами хостов.
В общем, избегайте использования имен хостов в MySQL ACL и всегда используйте IP или сеть. Затем добавьте skip-resolv в свою конфигурацию, чтобы повысить производительность соединения.