2012-06-21 2 views
2

고무를 사용하여 레일 어플리케이션을 배치하고 MySQL에 연결하는 데 문제가 있습니다. EC2에서 수동으로 MySQL을 설정해야합니까, 아니면 Rubber가 이미 그렇게 했어야합니까? 이 모든 도움이되지 동안 , 여기에 레이크가 실행 된 경우 출력 로그입니다 :MySQL은 고무로 전개하는 EC2에 연결하지 않습니다.

** [out :: db01.memepluspl.us] rake aborted! 
** [out :: db01.memepluspl.us] 
** [out :: db01.memepluspl.us] Access denied for user ''@'db01.memepluspl.us' to database 'meme_plus_plus_production' 
** [out :: db01.memepluspl.us] 
** [out :: db01.memepluspl.us] 
** [out :: db01.memepluspl.us] Tasks: TOP => db:migrate => environment 

답변

1

, 응용 프로그램 이름은 내가 인스턴스에 ssh'd

... rubber.yml에 입력 한 후 실제 응용 프로그램 이름 (프로젝트 파일이 자리 표시 자 이름을 유지) 실제로 달랐다했다 보았다 current/cat config/database.yml 내가 내가 변경했다 짐작 는 그냥 물건에서 실행하려고 할 것이다 연결 명령 레이크을 실행하려하고 오류가 발생했습니다, 그래서 나는

에 무슨 일이 일어나고 있는지 더 나은 디버그하려고 좋을 것 rubber-mysql.yml configs ... 이제 스테이지 준비물을 다시 만들면 적어도이 문제를 해결해야한다고 생각합니다.

0

내가 방향타 잘 모른다는하지만, 그것은 몇 가지 구성을 실종 보인다. 사용자가 지정되어 있지 않으며 암호가 없을 수도 있습니다.

+0

그래, 난 그냥 그것을 구성 할 경우 확실하지 않다. 내가 아는 한, 고무가 이것을 처리했다. rubber-mysql.yml 파일에는 사용할 수있는 설정이 있지만 이것을 변경하지 않았습니다. 나는 그것을 기본값으로 남겼다. – morcutt

0

나는 당신을 위해 MySQL의 계정을 생성해야하는 경우 모든 그래서 나도 몰라 고무에 익숙하지 해요,하지만 여기에 수동으로 수행하는 방법입니다 :

mysql -u root 
mysql> grant all on meme_plus_plus_production.* to 'user'@'db01.memepluspl.us' identified by 'password'; 
mysql> flush privileges; 
mysql> exit; 
당신이해야 할 수도 있습니다

MySSQL 루트 계정의 암호를 입력하십시오. 예를 들어 Ubunutu에서는 기본값이 "password"입니다.

또한이 예에서는 데이터베이스의 모든 테이블에 대해 지정된 사용자에게 전체 읽기 및 쓰기 권한을 부여합니다. 축소 된 권한을 사용하려면 MySQL grant 명령을 찾으십시오. 내 경우에는

2

다른 누구든지이 문제가 발생하면 mysql에 제한된 액세스 권한으로 추가 된 기본 익명 사용자가 생기기 때문입니다.

문제는 here으로 논의됩니다.

첫 번째 해결책은 충분히 포괄적이지 않습니다. 끝에 하나만 있으면 모든 익명 사용자 (로컬 호스트가 아님)가 삭제됩니다. 이것은 MYSQL이 USER보다 먼저 호스트에서 인증되기 때문에 익명 사용자 '@'your.host.com '이'dbuser'@'your.host.com '보다 우선적으로 사용되며 (mysql documentation에 설명되어 있음) 고무가 사용됩니다 전체 호스트 이름으로 연결하려고합니다.

을 편집 ./config/rubber/deploy-mysql.yml는 :

rubber.sudo_script "create_master_db", <<-ENDSCRIPT 
    mysql -u root -e "create database #{env.db_name};" 
    mysql -u root -e "delete from mysql.user where user='';" <<-- ADD THIS LINE 
    ... 
ENDSCRIPT 
+0

놀라운, 감사합니다! 이것은 anon 사용자 "issue"를 지적 했으므로 mysql_secure_installation을 실행하여 설치를 "보안"했습니다. 또한 요세미티에 MariaDB를 사용하고 있습니다. – Joe

관련 문제