Подтвердить что ты не робот

Доступ запрещен для пользователя 'test' @'localhost' (с использованием пароля: YES), кроме пользователя root

Я столкнулся с проблемой с пользователем mysql non root/admin, я следую приведенным ниже инструкциям для создания пользователя и его привилегий, исправьте меня, если я ошибаюсь,

Я устанавливаю mysql в RHEL 5.7 64bit, пакеты упоминаются ниже, как только я сделал rpm install мы

  • создание mysql db с помощью mysql_install_db, затем
  • запуск службы mysql, затем
  • используя mysql_upgrade, мы также делаем сервер.

После этого процесса я могу войти в систему как root, но с пользователем без полномочий root я не могу войти на сервер:

[[email protected] ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5


[[email protected] ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[[email protected] ~]# ls -ld /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Nov  30 11:09 /var/lib/mysql/mysql.sock

mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT USER(),CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| [email protected] | [email protected] |
+----------------+----------------+
1 row in set (0.00 sec)

[[email protected] ~]# mysql -ugolden -p
Enter password:
ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)

Это проблема, с которой я столкнулся, есть ли какое-либо решение?

4b9b3361

Ответ 1

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

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

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

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

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

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

select Host, User from mysql.user;

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

Ответ 2

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

mysql -u root -p

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

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

Ответ 3

Try:

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

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

Ответ 4

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

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

SELECT user,host FROM mysql.user;

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

1) пользователь = золотой, хост =%

2) пользователь = золотой, хост = локальный

Выполните эти команды:

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

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

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

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

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

enter image description here

Нажмите "Проверить соединение" и введите свой пароль "пароль".

Ответ 5

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

CREATE user [email protected] IDENTIFIED BY 'password_txt';

После погуглить и видя это, я обновил пользовательский пароль с помощью:

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

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

Ответ 6

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

Проверьте хранимую процедуру и просмотрите DEFINERS. Эти определители могут больше не существовать.

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

Ответ 7

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

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

mysql -p mydatabase --host=127.0.0.1

Ответ 8

В соответствии с тем, как вы создаете своего пользователя, 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 u[email protected];
flush privileges;

Ответ 9

Убедитесь, что у пользователя есть запись localhost в таблице users. Это была моя проблема. EX:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

Ответ 10

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

Ответ 11

подключите ваш сервер из mysqlworkbench и запустите этот command-> ALTER USER 'root' @'localhost', идентифицированный как 'ваш пароль';

Ответ 12

Для раздражающего поиска, попадающего сюда после поиска этого сообщения об ошибке:

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

Для меня проблема заключалась не в том, чтобы заключить пароль в кавычки. например. Мне нужно было использовать -p'password' вместо -ppassword

Ответ 13

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