SQLSTATE [HY000] [1045] Доступ запрещен для пользователя 'homestead' @ 'localhost' (с использованием пароля: YES) (SQL: выберите * из `задач` порядке` created_at` asc) [duplicate]

Для этой же таблицы

  UPDATE PHA_BILL_SEGMENT AS PHA (SELECT BILL_ID, COUNT (REGISTRATION_NUMBER) AS REG FROM PHA_BILL_SEGMENT GROUP BY REGISTRATION_NUMBER, BILL_DATE, BILL_AMOUNT ИМЕЕТ REG & gt; 1) T SET PHA  .BILL_DATE = PHA.BILL_DATE + 2 WHERE PHA.BILL_ID = T.BILL_ID;   
63
задан msturdy 3 December 2013 в 16:16
поделиться

12 ответов

Не разрешайте всем привилегиям по всем базам данных для пользователя без полномочий root, он небезопасен (и у вас уже есть «root» с этой ролью)

GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';

Этот оператор создает нового пользователя и предоставляет выбранные привилегии. IE:

GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';

Взгляните на docs , чтобы просмотреть все привилегии подробно

EDIT: вы можете найти дополнительную информацию по этому запросу (журнал в качестве «root»):

select Host, User from mysql.user;

Чтобы узнать, что произошло

45
ответ дан Alberto Megía 15 August 2018 в 20:28
поделиться

У меня также есть аналогичная проблема, и позже я обнаружил, что это потому, что я изменил свое имя хоста (не localhost).

Поэтому я разрешаю его, указав --host=127.0.0.1

mysql -p mydatabase --host=127.0.0.1
1
ответ дан 4af2e9eb6 15 August 2018 в 20:28
поделиться

Сначала я создал пользователя, используя:

CREATE user user@localhost IDENTIFIED BY 'password_txt';

. После поиска в googling и просмотра этого , я обновил пароль пользователя, используя:

SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');

и я мог бы подключиться позже.

3
ответ дан ako 15 August 2018 в 20:28
поделиться

Похоже, вы пытаетесь сделать пользователя «золотым» @ «%», но другой пользователь по имени «золотой» @ «localhost» мешает / имеет приоритет.

Выполните эту команду, чтобы увидеть пользователей:

SELECT user,host FROM mysql.user;

Вы должны увидеть две записи:

1) user = golden, host =%

2) user = golden, host = localhost

Выполните следующие команды:

DROP User 'golden'@'localhost';
DROP User 'golden'@'%';

Перезапустите Workbench MySQL.

Затем выполните свои исходные команды снова:

CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';

Затем, когда вы пытаетесь войти в MySQL, введите его так:

Нажмите «Проверить соединение» и введите пароль «password».

4
ответ дан Gene 15 August 2018 в 20:28
поделиться

В соответствии с созданием вашего пользователя MySQL интерпретирует другой способ. Например, если вы создаете такого пользователя:

create user user01 identified by 'test01';

MySQL ожидает, что вы предоставите некоторую привилегию, используя grant all on <your_db>.* to user01;

Не забудьте flush privileges;

Но если вы создаете такого пользователя (передавая IP-адрес), вы должны изменить его на:

create user 'user02'@'localhost' identified by 'teste02';

, поэтому, чтобы дать некоторые привилегии, вы должны это сделать:

grant all on <your_db>.* to user02@localhost;
flush privileges;
1
ответ дан Laurel 15 August 2018 в 20:28
поделиться

В моем случае такая же ошибка происходит, потому что я пытался использовать mysql, просто набрав «mysql» вместо «mysql -u root -p»

0
ответ дан lfvv 15 August 2018 в 20:28
поделиться

Попробуйте:

CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
FLUSH PRIVILEGES;

Или даже лучше использовать: mysql_setpermission для создания пользователя

17
ответ дан nrathaus 15 August 2018 в 20:28
поделиться
  • 1
    Это не решает проблему. СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'goldy' @ '%' ИДЕНТИФИЦИРОВАНО 'some_pass'; является допустимым запросом – pratim_b 3 December 2013 в 16:18
  • 2
    По какой-то причине его %, который должен работать на всех хозяев, не решает его. Поэтому, указав localhost, он должен работать. Если этот DOESNT работает, что-то отключено в mysql – nrathaus 3 December 2013 в 16:24

подключите свой сервер от mysqlworkbench и запустите эту команду -> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'yourpassword';

0
ответ дан Sachin 15 August 2018 в 20:28
поделиться

Просто добавьте имя компьютера вместо «localhost» в имя хоста или адрес хоста MySQL.

-6
ответ дан vipin 15 August 2018 в 20:28
поделиться

Для всех, кто сделал все советы, но проблема по-прежнему сохраняется.

Проверьте хранимую процедуру и просмотрите ОПРЕДЕЛЕНИЯ.

Моя проблема возникла, когда мы изменили хост шаблона (%) на IP-адрес, сделав базу данных более безопасной. К сожалению, есть некоторые представления, которые по-прежнему используют «user» @ «%», хотя «user» @ «172 ....» технически корректен.

3
ответ дан Yorro 15 August 2018 в 20:28
поделиться
  • 1
    Спасибо, что помог мне на правильном пути. Я даже не знал о настройке SQL Security на представлениях и хранимых процедурах. Я закончил установку SQL Security Invoker на мои представления, чтобы использовать разрешения пользователя, выполняющего команду, а не пользователя, создавшего представление. Вот ссылка для ссылки: dev.mysql.com/doc/refman/5.7/en/stored-programs-security.html – Justin 25 June 2016 в 19:51

Если вы подключаетесь к MySQL с помощью удаленной машины (пример workbench) и т. д., используйте следующие шаги для устранения этой ошибки в ОС, где установлен MySQL

mysql -u root -p

CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;

Попробуйте войти в экземпляр MYSQL. Это помогло мне устранить эту ошибку.

24
ответ дан Zachary Dahan 15 August 2018 в 20:28
поделиться
  • 1
    Даже это не работает, поскольку оно вызывает ошибку даже при запуске & quot; mysql -u root -p & quot; – Marian Klühspies 3 February 2015 в 17:53
0
ответ дан RyanT 5 September 2018 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: