2017-03-03 12 views
0

내가 갈퀴 작업을 실행하고 mysql2 보석을 통해 MySQL의에 대한 데이터베이스 연결을 만들려고하지만 어떤 이유로 나는이 오류가 무엇입니까있어 작동 :MySQL2 보석 액세스를 거부하지만 터미널을 통해 로그인

*** Mysql2::Error Exception: Access denied for user 'user'@'localhost' (using password: YES) 

이를

  • 내가 :

    Mysql2::Client.new(host: server, database: db, username: user, password: pwd) 
    

    이가 이상하다 두 가지 이유가 있습니다 : 연결 코드는 터미널을 통해 로그인 할 때 동일한 신임 정보를 사용할 수 있습니다.

  • VM (centos 7)을 작성하고 mysql 데이터베이스를 추가하고 dump.sql 파일을 업로드하여 터미널을 통해 잘 로그인 할 수있었습니다. MySQL2 보석. 그래서 코드가 작동한다는 것을 알기 때문에, 실행중인 mysql 인스턴스에서 왜 작동하지 않는지 모르겠습니다.

내가 사용자 권한을 확인했습니다 내 사용자가 데이터베이스가 로컬 호스트에서 실행되고, 필요한 모든 권한을 가지고, 나는 127.0.0.1host 매개 변수를 설정 시도와 같은 오류가있어.

이 호출 :

+--------------------+----------------+ 
| USER()    | CURRENT_USER() | 
+--------------------+----------------+ 
| [email protected]  | [email protected]%   | 
+--------------------+----------------+ 
1 row in set (0.00 sec) 

이 호출 :

mysql> Select SUBSTRING_INDEX(host,':',1) as 'ip' From information_schema.processlist WHERE ID=connection_id(); 

반환 : 내 MySQL 버전이 실행 리눅스 5.7.17,

+-----------+ 
| ip  | 
+-----------+ 
| localhost | 
+-----------+ 

입니다

를 다음 반환 mysql> select USER(), CURRENT_USER(); CentOS 7

왜 이것이 하나의 Centos/MySql 버전에서 작동하지 않을지 그리고 또 다른 이유는 터미널을 통해 로그인 할 수 있고 내 코드에서 할 수없는 이유는 무엇입니까? 단자를 통해

+0

시도'Mysql2 :: Client.new합니다 (mysql2 보석을 통해 새 비밀번호로 연결할 수 있어야합니다, 사용자 이름 => ENV [ 'Opendata_DATABASE_USERNAME'] : 비밀번호를 => ENV [ 'Opendata_DATABASE_PASSWORD'], : 호스트 => ENV [ 'Opendata_DATABASE_HOST'], : 포트 => ENV [ 'Opendata_DATABASE_PORT'], 데이터베이스 => ENV [ 'Opendata_DATABASE_NAME'])'포트를 추가 하시겠습니까? – Tsao

+0

여전히 실패하면 root를 사용하여 Mysql2 :: Client로 먼저 연결하고 사용자 권한 문제가 있는지 확인하십시오. – Tsao

+0

아니요, 포트를 추가해도 아무 것도 변경되지 않았습니다. –

답변

0

로그인 새 비밀번호를 재설정, 그리고