Итак, я создаю нового пользователя
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'@'%'
.