답변:
@ Phil 's Answer 와 @ Mr.Brownstone 's Answer 는 귀하의 질문에 충분해야하므로 둘 다 +1입니다.
다음은 username으로 로그인한다고 가정 해 봅시다. myuser
mysql에 연결되면 다음 쿼리를 실행해야합니다.
SELECT USER(),CURRENT_USER();
때때로 그들은 다릅니다. 이것은 왜 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의 비밀번호가 올바른지 확인하는 것입니다.
다음 명령을 사용할 수 있습니다 (PATH에 mysql이 설정되어 있다고 가정).
mysql -h 호스트 -u 사용자 -p
그냥 교체 호스트 와 사용자가 올바른 값을 다음 당신은 당신의 암호를 입력하라는 메시지가 표시되어야한다.