오류 1044 (42000) : ''@ 'localhost'사용자가 데이터베이스 'db'에 대한 액세스가 거부되었습니다.


164

MySQL에서 쿼리 작성을 시작하고 싶습니다.

show grants 보여줍니다 :

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

사용자 ID가 없지만 사용자를 만들고 싶을 때 특권이 없으며 한 명의 사용자가 없어도 권한을 부여하는 방법을 모릅니다!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

루트로 로그인하려고했습니다.

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1

3
권한이있는 사용자로 로그인해야합니다. rootMySQL을 설치할 때 최소한 생성되어 있어야합니다.
derobert

설치하는 동안 암호를 설정하라는 메시지가 표시되고 지금 루트로 설정하면 어떻게해야합니까?
Nickool

9
예를 들어을 실행하여 루트로 로그인해야합니다 mysql -u root -p. 그런 다음 데이터베이스 서버에 대한 모든 권한이 있으며 다른 사용자를 만들 수 있습니다.
derobert

명령 행을 사용하여 로그인 할 때 루트로 로그인하려면 다음을 수행하십시오. mysql -u root -p
Travis

1
@nikparsa : 아니요, mysql 프롬프트가 아닌 쉘 프롬프트에서 'mysql'대신 실행합니다.
derobert

답변:


219

아니야 mysql -u root -p MySQL 명령 줄이 아닌 bash에서 . mysql에 있다면 exit를 입력하여 종료 할 수 있습니다 .


? 나는 떠들썩한 파티에 갈 수 어떻게 MySQL은 여기를 참조 설치 문제가 있었다 superuser.com/questions/377679/... 난 그냥 커맨드 라인에 있습니다 ABT 알
Nickool

6
'quit'을 사용하여 mysql을 종료하면 bash에 있습니다.
Nowhy

23
참고로 기본적으로 암호는 비어 있습니다
bigpotato

창을 사용하면 어떻게 되나요?
PHPFan

종료 또는 종료가 작동하지 않습니다. 다른 방법을 제공해주세요. 저는 Windows 10에 있습니다
Metin Dagcilar

46

MySQL 데이터베이스에 대한 루트 계정을 설정해야 할 수도 있습니다.

터미널 유형에서 :

mysqladmin -u root password 'root password goes here'

그런 다음 MySQL 클라이언트를 호출하십시오.

mysql -h localhost -u root -p

1
이것은 나를 위해 일했고, 처음에는 잘 작동했다가 갑자기 일을 중단했습니다. 어떤 생각, 왜 이것이 처음에 발생합니까?
mu 無

@ soleshoe 메신저 오류가 발생합니다 : sudo : mysqladmin : 명령을 찾을 수 없습니다. 어떻게해야합니까? mysql은 이미 시스템 환경 설정에서 실행 중입니다.
Hitarth

29

나는 다른 문제로 여기로 데려왔다. 로그인하려고 할 때마다 올바르게 인증하는 대신 익명 사용자로 로그인했기 때문에 해당 메시지가 나타납니다. 내 문제에 대한 해결책은 다음과 같습니다.

현재 사용자 및 사용 권한을 확인하려면 다음을 수행하십시오.

select user(), current_user();

성가신 익명 사용자를 삭제하려면

drop user ''@'localhost';

1
"mysql -u username -p"를 사용하고 있어도 문제가 해결되었습니다. 매우 이상합니다 : user ()는 내 사용자 이름이지만 current_user ()는 localhost입니다 ... 왜 그런지 모르겠습니까?
ethanpil

2
@Leftteris hi .. im이 오류가 발생합니다 : 액세스가 거부되었습니다. ''@ 'localhost'사용자를 삭제하려고 할 때이 작업에 대해 CREATE USER 권한이 필요합니다 (적어도 하나 이상).
Hitarth

15

이것은 사용자 권한과 관련이 있습니다. 적절한 보조금을 제공하면이 문제가 해결됩니다.

단계 [1] : 터미널을 열고이 명령을 실행하십시오

$ mysql -uroot -p

출력 [1] : 아래와 같이 mysql 프롬프트가 나타납니다.

여기에 이미지 설명을 입력하십시오

2 단계]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

통사론:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

노트 :

  • 호스트 이름은 IP 주소, 로컬 호스트, 127.0.0.1 일 수 있습니다.
  • 에서 database_name/ table_name* 수단 모든 데이터베이스
  • 에서 hostname모든 호스트를 지정하려면 '%'를 사용하십시오.

단계 [3] : quit/ exit명령을 입력하거나을 눌러 현재 mysql 프롬프트에서 빠져 나오십시오 Ctrl+D.

단계 [4] : 새로운 사용자로 로그인

$ mysql -uparsa -pyour_password

단계 [5] : 데이터베이스 생성

mysql> create database `database_name`;

내가 할 때 CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';오류 얻을 수있다 : ERROR 1227 (42000) : 액세스가 거부; 당신은 (중 적어도 하나)가이 작업에 대한 사용자 권한 (들)를 만들 필요
항공기

루트 사용자를 사용하여 mysql 클라이언트에 로그인 했습니까
theBuzzyCoder

9

전체 로그인 명령을 시도 할 수 있습니다.

mysql -h host -u root -p 

어디 호스트가 될 것입니다 127.0.0.1.

협력이 존재하도록하기 위해 이것을하십시오.

를 사용 mysql -u root -p하면 많은 데이터베이스 검색을 수행 할 수 있지만 경로 설정으로 인한 데이터베이스 생성을 거부합니다.


6

먼저, 명령 행에 익숙하지 않다면 웹 브라우저에서 phpmyadmin을 사용해보십시오. 이렇게하면 실제로 mysql 데이터베이스가 생성되고 사용자 이름이 생성됩니다.

다음은 명령 행 (bash)에서 연결하는 방법입니다.

mysql -h hostname -u username -p database_name

예를 들면 다음과 같습니다.

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb

1
-p비밀번호이며 데이터베이스 이름을 전달하는 데 사용하고 있습니다. 또한 암호의 경우 공백 과 실제 암호 가 없어야-p 합니다. -D특정 데이터베이스에 연결하는 데 사용 합니다.
sv.

5

MySQL쉘 에 있다면 , exit를 입력하여 종료하십시오 프롬프트 명령으로 돌아갑니다.

이제 MySQL정확히 다음 명령을 사용하여 시작 하십시오.

sudo mysql -u root -p

사용자 이름이 root가 아닌 경우 위 명령에서 'root'를 사용자 이름으로 바꾸십시오.

sudo mysql -u <your-user-name> -p

그런 다음 MySQL계정 / 암호 를 묻고 MySQL액세스 권한 문제가 표시되지 않습니다.


암호를 입력 한 후 "sudo : mysql : command not found"가 표시됩니다. 이것에 대해 도와주세요
Hitarth

"sudo :"가 아니어야합니다. "sudo"여야합니다. 오타가 아닌 경우 이것이 문제라고 생각합니다.
Kshitij Mittal

2

@Nickparsa… 두 가지 문제가 있습니다.

1). mysql -uroot -p MySQL 명령 줄이 아닌 bash (터미널이라고도 함)로 입력해야합니다. 다음을 입력하여이 오류를 해결하십시오.

exit

MySQL 명령 줄에서. 이제 배쉬 / 터미널 명령 행으로 돌아 왔습니다.

2). 구문 오류가 있습니다.

mysql -uroot -p; 

-p 앞에 세미콜론이 있어야합니다. 올바른 구문은 다음과 같습니다.

mysql -uroot -p

bash 명령 행에 올바른 구문을 입력하십시오. 비밀번호가 설정되어 있으면 입력하십시오. 그렇지 않으면 그냥 입력 버튼을 누르십시오. 다음과 유사한 응답이 나타납니다. 여기에 이미지 설명을 입력하십시오

도움이 되었기를 바랍니다!


안녕하세요,이 추천서에 불이 붙은 후 abow 화면을 열렬히 받았습니다. / usr / local / mysql / bin / mysql 그러나 그 후에 "CREATE DATABASE 책을 사용하여 데이터베이스를 만들려고 할 때"오류가 발생합니다. '도서 도와주세요'
Hitarth

0

대부분의 개발자 는 서버에 로그인 한 다음 (MySQL 데이터베이스의 사용자 이름과 암호가 있다고 가정합니다) Bash에서 mysql> prompt아래 명령을 사용하도록 전환 합니다 (작동하지 않습니다)

mysql -h localhost -u root -p

해야 할 일은 bash 프롬프트에서 위의 명령을 사용하는 것입니다-> 그렇게하면 암호가 주어지면 mysql 프롬프트로 직접 가져갑니다.

그런 다음 데이터베이스, 테이블을 하나씩 만들 수 있습니다

비슷한 교착 상태에 직면하여 경험을 공유했습니다.


0

위의 답변에 따라 올바른 명령을 받았는데, 내가 놓친 것은 Workbench에서 사용자에 대한 '호스트에서 연결 제한'을 언급하고 기본값은 "%"입니다.이 값을 "localhost"로 변경하면 그 후에 잘 연결됩니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.