mysql 비 루트 / 관리자 사용자에게 문제가 있습니다. 사용자 및 권한을 생성하기 위해 아래 단계를 따르고 있습니다. 잘못하고있는 경우 수정합니다.
에 설치 중 mysql
입니다 RHEL 5.7 64bit
. 패키지는 아래에 언급되어 rpm install
있습니다.
- 를 사용하여 mysql db를
mysql_install_db
만든 다음 - mysql 서비스를 시작한 다음
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