[mysql] root 사용자를 제외하고 ‘test’@ ‘localhost’사용자 (암호 사용 : YES)에 대한 액세스가 거부되었습니다.

mysql 비 루트 / 관리자 사용자에게 문제가 있습니다. 사용자 및 권한을 생성하기 위해 아래 단계를 따르고 있습니다. 잘못하고있는 경우 수정합니다.

에 설치 중 mysql입니다 RHEL 5.7 64bit. 패키지는 아래에 언급되어 rpm install있습니다.

  1. 를 사용하여 mysql db를 mysql_install_db만든 다음
  2. mysql 서비스를 시작한 다음
  3. mysql_upgrade또한 우리는 서버를 사용하고 있습니다.

이 프로세스 후에는 다음으로 로그인 할 수 root있지만 루트가 아닌 사용자로는 서버에 로그인 할 수 없습니다.

[root@clustertest3 ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5


[root@clustertest3 ~]# 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

[root@clustertest3 ~]# 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() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)

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

이것이 내가 직면 한 문제입니다. 이에 대한 해결책이 있습니까?



답변

모든 데이터베이스에 대한 모든 권한을 루트가 아닌 사용자에게 부여하지 마십시오. 안전하지 않습니다 (이미 해당 역할에 “루트”가 있음).

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

이 문은 새 사용자를 만들고 선택한 권한을 부여합니다. IE :

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

모든 권한을 자세히 보려면 문서 를 살펴보십시오.

편집 :이 쿼리 ( “root”로 로그인)로 더 많은 정보를 찾을 수 있습니다.

select Host, User from mysql.user;

무슨 일이 있었는지보기 위해


답변

원격 시스템 (예제 워크 벤치) 등을 사용하여 MySQL에 연결하는 경우 다음 단계를 사용하여 MySQL이 설치된 OS에서이 오류를 제거하십시오.

mysql -u root -p

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

MYSQL 인스턴스에 로그인 해보십시오.
이것은이 오류를 제거하는 데 도움이되었습니다.


답변

시험:

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

또는 더 나은 사용 : mysql_setpermission사용자 생성


답변

사용자 ‘golden’@ ‘%’을 (를) 만들려고했지만 ‘golden’@ ‘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에 로그인하려고 할 때 다음과 같이 입력하십시오.

여기에 이미지 설명 입력

‘연결 테스트’를 누르고 비밀번호 ‘비밀번호’를 입력하십시오.


답변

먼저 다음을 사용하여 사용자를 만들었습니다.

CREATE user user@localhost IDENTIFIED BY 'password_txt';

인터넷 검색 후 이것을 본 후 다음을 사용하여 사용자의 비밀번호를 업데이트했습니다.

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

나중에 연결할 수 있습니다.


답변

모든 조언을했지만 문제가 여전히 지속되는 다른 사람을 위해.

스토어드 프로 시저를 확인하고 DEFINERS를보십시오. 이러한 정의자는 더 이상 존재하지 않을 수 있습니다.

내 문제는 와일드 카드 호스트 (%)를 특정 IP로 변경하여 데이터베이스를보다 안전하게 만들었을 때 나타났습니다. 아쉽게도 ‘user’@ ‘172 ….’가 기술적으로 정확하더라도 여전히 ‘user’@ ‘%’를 사용하는 뷰가 있습니다.


답변

나도 비슷한 문제가 있는데 나중에 호스트 이름을 변경했기 때문에 발견되었습니다 localhost.

따라서 다음을 지정하여 해결됩니다. --host=127.0.0.1

mysql -p mydatabase --host=127.0.0.1