Ошибка аутентификации при подключении к MySQL от имени пользователя без прав root - PullRequest
0 голосов
/ 26 сентября 2019

Мои попытки входа в систему не удаются для новой учетной записи пользователя, которую я создал, и я потратил несколько часов, изучая, как выполняется аутентификация в MySQL, но в конечном итоге я просто не до конца понимаю, как все компоненты сочетаются друг с другом в отношении MySQLЛогика аутентификации сервера.

Все на одном сервере:

  • MySQL 5.7

  • phpMyAdmin 4.9

  • Ubuntu 18.04

Дополнительная информация:

  • Нетпользователи с пустыми именами в таблице mysql.user

  • Пароль не имеет специальных символов

  • Я пробовал localhost, 127.0.0.1 и собственно имя хоста

  • / var / log / mysql / error.log показывает только то же самое сообщение об ошибке

СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ

Это делается с помощью:

  1. phpMyAdmin GUI> вкладка SQL:
flush privileges;
create user 'testuser'@'localhost' identified by 'password!';
grant * on inventory to 'testuser'@'localhost';
flush privileges;

phpMyAdmin GUI> вкладка «Учетная запись пользователя»> «Добавить учетную запись пользователя»

ssh на сервер Ubuntu и создание пользователя из командной строки mysql (с правами root)

Независимо от того, как я это делаю, я могу успешно создать пользователя, но не могу аутентифицироваться.

АУТЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЯ

Вот два способа, которые я попробовал:

1) Из сеанса ssh на сервере Ubuntu:

  • mysql -u testuser -p

  • mysql -u testuser - h 127.0.0.1 -p

  • mysql -u testuser - h localhost -p

  • mysql -u testuser - h -p

2) Запустите connect.php с другого компьютера, используя (IE / Chrome / FF):

<?php

$dbhost='localhost';
$dbuser='testuser';
$dbpass='password';
$dbname='inventory';

$conn = new mysqli($dbhost,$dbuser,$dbpass,$dbname);

if($conn->connect_error) {
    die("Error: Couldn't connect: ".$conn->connect_error);
}

?>

2)В зависимости от того, использовал ли я 'testuser'@'%' или 'testuser'@'localhost', я получу одну из двух ошибок:

  • Доступ запрещен для пользователя 'testuser' @ '%' (с использованием пароля: ДА)

  • Доступ запрещен для пользователя 'testuser' @ 'localhost' (using password: YES)

Чтобы исключить проблему с разрешениями, я назначил пользователю все глобальные разрешения, но сообщение об ошибке не изменилось, поэтому я отменил изменение.

Работает select host,user,plugin,authentication_string,account_locked from mysql.user where user='testuser'; показывает:

хост localhost

пользователь testuser

плагин mysql_native_password

authentication_string blahblahblah

account_locked N

1 Ответ

0 голосов
/ 26 сентября 2019

Попробуйте предоставить такие разрешения:

GRANT ALL ON inventory.* TO 'testuser'@'localhost';
...