IT

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

itgroup 2022. 10. 18. 21:40
반응형

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

MySQL에서 쿼리를 작성하려고 합니다.

show grants다음에 나타냅니다.

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

user-id는 없지만 사용자를 만들고 싶을 때는 권한이 없습니다.또한 사용자가 1명도 없을 때 특권을 만드는 방법도 모릅니다.

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

아니, 도망가야 해mysql -u root -pmySQL 명령줄에서가 아닌 bash로 표시됩니다.mysql일 경우 exit을 입력하여 종료할 수 있습니다.

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

단말기에 다음과 같이 입력합니다.

mysqladmin -u root password 'root password goes here'

그런 다음 MySQL 클라이언트를 호출하려면:

mysql -h localhost -u root -p

나는 다른 문제로 여기 오게 되었다.로그인을 시도할 때마다 이 메시지가 표시되는데, 이는 올바르게 인증되지 않고 익명 사용자로 로그인했기 때문입니다.문제의 해결 방법은 다음과 같습니다.

자신이 어떤 사용자인지, 누구의 권한을 가지고 있는지 확인하려면:

select user(), current_user();

귀찮은 익명 사용자를 삭제하려면:

drop user ''@'localhost';

이것은 사용자 권한과 관련이 있습니다.적절한 보조금을 주는 것이 이 문제를 해결할 것이다.

순서 [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 주소, localhost, 127.0.0.1 입니다.
  • database_name/table_name*는 모든 데이터베이스를 의미합니다.
  • hostname모든 호스트를 지정하려면 '%'를 사용합니다.

순서 [3]:다음 중 하나를 입력하여 현재 mysql 프롬프트를 종료합니다.quit/exit명령 또는 프레스Ctrl+D.

순서 [4]:새 사용자에게 로그인

$ mysql -uparsa -pyour_password

순서 [5]:데이터베이스 생성

mysql> create database `database_name`;

완전한 login 명령어를 시험해 볼 수 있습니다.

mysql -h host -u root -p 

호스트가 있는 곳127.0.0.1.

협력이 존재하는지 확인하기 위해 이 작업을 수행합니다.

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

에 있는 경우MySQLexit 이라고 입력하고 종료하면 명령 프롬프트로 돌아갑니다.

자, 시작합니다.MySQL다음 명령어를 정확히 사용합니다.

sudo mysql -u root -p

사용자 이름이 root 이외의 경우 위의 명령어 'root'을 사용자 이름으로 바꿉니다.

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

그 후, 다음과 같이 묻습니다.MySQL계정/비밀번호와MySQL그러면 접근 권한 문제가 나타나지 않습니다.

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

명령줄(배시)에서 접속하는 방법은 다음과 같습니다.

mysql -h hostname -u username -p database_name

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

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

@Nickparsa... 2가지 문제가 있습니다.

) 1) 1)mysql -uroot -pMySQL의 bash(bash)입니다.하려면 , 「 」를 입력합니다.

exit

MySQL 명령줄에 표시됩니다.이것으로 bash/terminal 명령줄로 돌아갑니다.

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

mysql -uroot -p; 

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

mysql -uroot -p

명령줄에합니다.설정되어 있는 경우는 패스워드를 입력합니다.입력해 주세요. 겁니다.여기에 이미지 설명 입력

이게 도움이 됐으면 좋겠네요!

connect mysql with sudo 및 필요한 사용자에게 권한을 부여합니다.

sudo mysql -u user;
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'localhost';

대부분의 개발자는 서버에 로그인하고(mysql 데이터베이스의 사용자 이름과 비밀번호를 가지고 있을 것으로 생각됩니다) Bash에서 로 전환합니다.mysql> prompt 않습니다

mysql -h localhost -u root -p

필요한 것은 위의 명령어를 bash 프롬프트에서 사용하는 것입니다.--> 그러면 mysql 프롬프트에 직접 패스워드를 입력하도록 요구됩니다.

그런 다음 테이블을 하나씩 생성할 수 있습니다.

나도 비슷한 교착상태에 빠졌기 때문에 경험을 공유한다.

위의 답변에 따라 올바른 명령어를 사용했는데, 놓쳤던 것은 Workbench에서 사용자에 대해 "호스트로부터의 접속 제한"을 언급했습니다.기본값은 "%"입니다.이것을 "localhost"로 변경하면 그 후에 정상적으로 연결됩니다.

데이터베이스 애플리케이션 사용자에게 최소한의 권한을 부여하기 위해 역할을 사용하고 있습니다.ERROR 1044(42000):I RTFM이 로그인 시 계정을 인증하기 위해 각 사용자에게 기본 역할을 부여해야 한다는 것을 알게 될 때까지 사용자 액세스가 거부되었습니다.

#create a role
CREATE ROLE 'rolename';

#give necessary privileges to role
GRANT INSERT, UPDATE, DELETE, SELECT ON database.table TO 'rolename';

#create user
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

#give the user a role(s)
GRANT 'rolename' TO 'username'@'host';

#set the user's default otherwise it's ERROR 1044
SET DEFAULT ROLE 'rolename' FOR 'username'@'host';

언급URL : https://stackoverflow.com/questions/8838777/error-1044-42000-access-denied-for-user-localhost-to-database-db

반응형