‘Пользователю отказано в доступе ‘user’@’localhost’

#mariadb

#мариадб

Вопрос:

Я пытаюсь создать пользователя sql, который выполняет единственную роль при выполнении процедуры входа в систему, но я продолжаю получать одну и ту же ошибку: Access denied for user 'login'@'localhost' (using password: YES)

Я создал пользователя следующим образом:

 CREATE USER IF NOT EXISTS 'user'@'%' IDENTIFIED BY 'password';
GRANT EXECUTE ON procedure `table`.`login` TO 'user'@'%';
 

Если я пытаюсь войти в систему через терминал или mysql workbench или использовать mysql_real_connect() функцию в моем C-клиенте, я всегда получаю одну и ту же ошибку.

Комментарии:

1. Убедитесь, что вы тоже бежите FLUSH PRIVILEGES ; после этого.

2. Я создаю базу данных из модели mysql-workbench (.mwb), используя функцию «forward engineer». Но я также попытался вручную создать пользователя, используя ПРИВИЛЕГИИ FLUSH; тоже. Я продолжаю получать ошибку.

3. Я предположил, что вы изменили имя функции и имя пользователя, но на всякий случай вы этого не сделали: вы создаете пользователя «user», но доступ запрещен для пользователя «login», вы перепутали имя пользователя и имя процедуры? Также на основе dba.stackexchange.com/questions/97719 /… это имя вашей базы table данных? В этом месте должно быть имя базы данных.

Ответ №1:

Я решил это, переустановив mariadb и используя следующие команды:

 mysql_upgrade -u root -p
chown mysql:mysql /var/lib/mysql -R
systemctl enable mysqld
systemctl start mysqld
 

Моя система — arch linux, это также может быть полезно для лучшего управления установкой mysql или mariadb: https://wiki .archlinux.org/index.php/MySQL