MySQL – доступ запрещен для пользователя

Итак, я создаю нового пользователя

CREATE USER servname_shb IDENTIFIED BY 'password'; 

Предоставьте ему все привилегии:

 GRANT ALL ON *.* TO servname_shb; 

Пока нет ошибок. Затем я пытаюсь подключиться к базе данных:

 $dbhost = "localhost"; $dbname = "servname_shbusers"; $dbuser = "servname_shb"; $dbpass = "password"; $c = mysql_connect($dbhost,$dbuser,$dbpass) or die("Error:".mysql_error()); mysql_select_db($dbname) or die ("Error connecting to databse:".mysql_error()); 

И получите ошибку:

 Access denied for user 'servname_shb'@'localhost' (using password: YES) in <path> 

Я попробовал FLUSH PRIVILEGES, сбросив и воссоздавая пользователя – никакого эффекта. Что я делаю не так?

Сообщения об ошибках дают вам подсказку. Используйте эту заявку:

 GRANT ALL ON *.* TO 'servname_shb'@'localhost'; 

Или лучше, как указывает @grantk в комментариях, уточните область доступа только для того, что действительно необходимо.

Вы должны использовать 'servname_shb'@'localhost' качестве имени пользователя. Ваш запрос станет:

 CREATE USER 'servname_shb'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON *.* TO 'servname_shb'@'localhost'; 

Примечание: 'servname_shb'@'localhost' разрешает подключение только с localhost. Вы можете использовать 'servname_shb'@'%' чтобы разрешить соединение 'servname_shb'@'%' .