Linux 명령 줄에서 MySQL 자격 증명을 테스트 하시겠습니까?


답변:


5

@ Phil 's Answer@ Mr.Brownstone 's Answer 는 귀하의 질문에 충분해야하므로 둘 다 +1입니다.

다음은 username으로 로그인한다고 가정 해 봅시다. myuser

mysql에 연결되면 다음 쿼리를 실행해야합니다.

SELECT USER(),CURRENT_USER();
  • USER () 는 MySQL에서 인증을 시도한 방법을보고합니다
  • CURRENT_USER () 는 MySQL에서 인증이 허용 된 방법을보고합니다

때때로 그들은 다릅니다. 이것은 왜 mysql에 로그인이 허용되는지에 대한 통찰력을 줄 수 있습니다.

실행해야 할 다른 쿼리는 다음과 같습니다.

SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';

로 로그인 할 수있는 방법이 표시됩니다 myuser.

이 표시 'myuser'@'localhost'되면 DB 서버 내에서 인증 할 수 있습니다.

이 표시 'myuser'@'127.0.0.1'되고 보이지 않으면 'myuser'@'localhost'DB 서버 내에서 다시 인증 할 수 있지만 --protocol=tcp명령 행에서 를 지정해야합니다 .

이 표시 'myuser'@'%'되면 모든 서버에서 원격 로그인을 수행 할 수 있습니다.

이 표시 'myuse'r@'10.20.30,%'되면 10.20.30. % 넷 블록에서만 원격 로그인을 수행 할 수 있습니다.

'mysql.user'가 사용자에게 가지고있는 것을 본 후에는 myuser가 다른 방식이 아닌 한 가지 방식으로 로그인을 허용하거나 제한 할 수 있습니다.

암호가있는 경우 단순히 확인하려는 경우 myuser입니다 whateverpassword, 다음을 수행 할 수 있습니다 :

SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');

다음과 같이 명령 행에서 확인할 수 있습니다.

PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`

내 사용자 root만 테스트 하지 않으 려면 다음을 수행하십시오.

PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`

1을 받으면 myuser의 비밀번호가 올바른지 확인하는 것입니다.


13
mysql -h host -u user -p<whatever> -e"quit"

이를 통해 프로그래밍 방식으로 서버에 쿼리를 보내는 데 사용하는 것과 동일한 연결 문자열을 사용할 수 있습니다. || exit 1유효하지 않은 인수에서 자동 종료를 추가 할 수 있습니다 . /dev/null자동 생성 된 MySQL 오류 메시지가 마음에 들지 않으면 stderr를 리디렉션하도록 할 수도 있습니다 .


6

다음 명령을 사용할 수 있습니다 (PATH에 mysql이 설정되어 있다고 가정).

mysql -h 호스트 -u 사용자 -p

그냥 교체 호스트사용자가 올바른 값을 다음 당신은 당신의 암호를 입력하라는 메시지가 표시되어야한다.


2
프로그래밍 방식으로 확인하고 싶습니다. true 또는 false를 반환하는 것과 같습니다.
Jake Wilson

2
mysql --user=user_name --password=your_password dbname

질문이 간단합니까, 아니면 테스트해야 할 특정 사례가 있습니까?

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