Страница 1 из 1

MySQL: ошибка Access denied

Добавлено: 23 фев 2014, 03:21
Dragon_Knight
Тема поднималась на форуме, Но её решение временное и несерьёзное.

1) Захожу в phpMyAdmin и добавляю пользователя + таблица с его именем:
Имя пользователя: opcom
Хост: opcom.local
Пароль: opcom
Подтверждение: opcom
Дальше в PHP пишу следующее:
$MySQL_HOST = "opcom.local";
$MySQL_USER = "opcom";
$MySQL_PASS = "opcom";
$MySQL_BASE = "opcom";
$MySQLi = new mysqli($MySQL_HOST, $MySQL_USER, $MySQL_PASS, $MySQL_BASE); 
В результате получаю: "Access denied for user 'opcom'@'127.0.0.1' (using password: YES)".
Почему ошибка очевидно, тока вот какого хрена MySQL зарезолвил имя наука умалчивает.
MySQL 5.1.XX с такими-же настройками работает замечательно.

Что делаю не так? Использовать в замен хоста % является не решением а дибилизмом, и остаётся только в роутере пробросить порт 3306...

Добавлено: 23 фев 2014, 04:49
Максим
Мда, детский сад опять начинается. Естественно оно будет давать запрет доступа, вы же в ХОСТ вписали домен opcom.local, в то время как ломитесь в MySQL с адреса 127.0.0.1 который при превращении в домен скорее всего отдаёт у вас имя компьютера (что-то типа Федя-PC). Указывайте в поле ХОСТ не домен, а ip адрес(а), с которого разрешен доступ к MySQL.

Добавлено: 23 фев 2014, 04:52
Dragon_Knight
Т.е. приходим к тому, что в PhpMyAdmin указываем 127.0.0.1 а в php имя домена?

Добавлено: 23 фев 2014, 04:59
Максим
Видимо вы совсем не понимаете что там и к чему. В PHPMyAdmin при создании пользователя вы указываете откуда (с какого адреса) ему разрешено подключаться. А в PHP вы указывает адрес на котором висит MySQL сервер, т.е. куда надо подключаться. Это совершенно разные вещи.

Добавлено спустя 1 минуту 32 секунды:
Если вкратце, то да, конечно, в случае сервера на адресе 127.0.0.1 указываем этот IP в PHPMyAdmin, а в своих скриптах адрес домена как и сказано в Руководстве Пользователя. Как видите всё очень просто :)

Добавлено спустя 3 минуты 5 секунд:
Другой случай - сервер висит на адресе 192.168.0.2. Тогда при создании юзера в PHPMyAdmin нужно указывать этот адрес. Либо % - что означает можно подключаться с любого адреса, но вам почему-то эта настройка не нравится.

Добавлено: 23 фев 2014, 05:01
Dragon_Knight
Это и оленю понятно что не MySQL подключаться к php... :)
Тогда зачем в руководстве написано такое:
Данные для подключения к MySQL
Адрес: домен вашего сайта*
Порт: 3306
Пользователь: mysql
Пароль: mysql

* Например, если ваш скрипт размещен по адресу test.server.local/mysql.php, то хостом (адресом) MySQL, PostgreSQL, FTP и Memcache сервера будет домен: test.server.local
Добавлено спустя 1 минуту 16 секунд:
Настройка % мне не нравиться, потому что сервер боевой с доступом из вне, и хотя порт сервера не открыт, как-то не приятно иметь настройку "лезь откуда хочешь"...

Добавлено: 23 фев 2014, 05:05
Максим
Dragon_Knight писал(а):Тогда зачем в руководстве написано такое:
В руководстве всё написано верно.

Добавлено: 23 фев 2014, 05:10
Dragon_Knight
Вы отредактировали своё сообщение, поэтому моё потеряло смысл...
...
В итоге, для упрощения и убыстрения процесса подключения Мы указываем IP (127.0.0.1) и в MySQL и в PHP, что-бы имена не резолвелись (на разыменование домена тоже время нужно-же).

Добавлено: 23 фев 2014, 05:16
Максим
Делайте как хотите, но в PHP лучше указывать домен. А что касается резолвинга домена, то он занимает милисекунды, поскольку никаких сетевых запросов никуда не идёт, Windows ведь использует текстовый HOST файл.