내가 갈퀴 작업을 실행하고 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.1
에 host
매개 변수를 설정 시도와 같은 오류가있어.
이 호출 :
+--------------------+----------------+
| 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 버전에서 작동하지 않을지 그리고 또 다른 이유는 터미널을 통해 로그인 할 수 있고 내 코드에서 할 수없는 이유는 무엇입니까? 단자를 통해
시도'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
여전히 실패하면 root를 사용하여 Mysql2 :: Client로 먼저 연결하고 사용자 권한 문제가 있는지 확인하십시오. – Tsao
아니요, 포트를 추가해도 아무 것도 변경되지 않았습니다. –