Доступ запрещен для пользователя '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)
Это проблема, с которой я столкнулся, есть ли какое-либо решение?
Ответы
Ответ 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.