여러 서버에 액세스하도록 phpMyAdmin을 구성하는 방법은 무엇입니까?


13

여러 MySQL 서버를 관리하는 데 사용할 수 있도록 phpMyAdmin을 구성하는 Ubuntu 방법은 무엇입니까? 데이터베이스 매개 변수는에 설정되어 /etc/dbconfig-common/phpmyadmin.conf있지만 단일 서버의 연결 매개 변수를위한 공간 만 있습니다. 나는에 해킹 수 /etc/phpmyadmin/config-db.php/etc/phpmyadmin/config.inc.php,하지만 난 더 우아한 방법이 있어야한다 가정합니다.


이것을 할 해결책을 찾은 적이 있습니까? 언급 한 파일 중 하나를 해킹 했습니까?
Nanne

이 튜토리얼 은 하나의 phpMyAdmin 설치로 여러 MySQL 서버를 관리하는 방법을 설명합니다. 보안상의 이유로, phpMyAdmin을하고 원격 MySQL 서버 간의 통신은 SSL 암호화를 사용

답변:


8

상당히 오래된 질문이지만 여전히 검색과 관련이 있습니다.

phpMyAdmin은 구성 파일에 일반 PHP를 사용 $cfg['Servers']하고 구성된 서버를 얻기 위해 배열을 사용합니다.

따라서 올바른 방법은 추가 /etc/phpmyadmin/conf.d하려는 모든 서버 에 새 구성 파일 을 추가하는 것입니다. 파일 이름을 .php포함시키기 위해 파일 이름을 끝내기 만하면되지만 your_new_server.inc.php일관성 을 위해 사용하는 것이 좋습니다 .

주어진 구성 파일의 최소 내용은 다음과 같습니다.

<?php // let the interpreter know this is code
$cfg['Servers'][2]['host']     = 'THE_HOST';
$cfg['Servers'][2]['user']     = 'THE_USER';
$cfg['Servers'][2]['password'] = 'THE_PASSWORD';

다른 답변에서 언급했듯이 /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php 파일에서 더 많은 매개 변수를 확인할 수 있습니다 .

중요 사항 : 모든 새 파일에 대해 배열의 색인 (2)을 늘려야하며 localhost에 계속 연결하려면 1을 사용하지 마십시오.

phpMyAdmin 패키지에 대해 생각한 사람은 디렉토리 $i의 파일을 포함하는 foreach에 증가 변수를 추가했을 수 conf.d있으므로 색인으로 사용할 수 있으므로 걱정할 필요가 없습니다. 수동으로 늘리지 만 슬프게도 그렇지 않습니다. 그래도 스스로 할 수 있습니다.


[2019] : 최신 PHP 버전에서는보다 간결한 대체 구문을 사용할 수 있습니다.

<?php $cfg['Servers'][] = ['host'=>'my_host', 'user'=>'my_user', 'password'=>'my_pass'];

나는 /etc/phpmyadmin/conf.d/slaveA.conf.php에 나열된 최소한의 내용을 넣어 보았고 단순히 PHPMyAdmin 페이지의 맨 위에 내용을 보았습니다. 동일한 내용을 config.inc.php의 바닥에 넣었을 때 효과가있었습니다. 그것에 관한 무언가가 그것을 망쳐 놓는 것 같습니다. 그렇지 않으면 업데이트에서 종료되지 않는 사용자 지정 구성을 만드는 예상 방법입니다.
flickerfly

1
@flickerfly, 늦은 답변이지만 구성 파일의 코드는 <?php다른 PHP 스크립트 와 같이 로 시작해야 합니다.
Marc

4

이것이 가장 정확한 방법이라고 생각합니다.

먼저 비밀번호를 설정하십시오.

sudo htpasswd -c /etc/phpmyadmin/htpasswd.setup admin

그런 다음 보안을 비활성화하십시오.

sudo pma-configure

그런 다음 http : // yourserver / phpmyadmin / setup으로 이동 하십시오 (여기에서 브라우저는 인증을 요구하고 사용자는 admin이며 암호는 첫 번째 명령으로 쓰는 것입니다).이 마법사를 사용하여 서버를 구성하면 완료되면 다시 보안 :

sudo pma-secure

이 방법으로 생성 된 설정 파일은 /var/lib/phpmyadmin/config.inc.php에 저장됩니다.
Michael Lawton

이 방법으로 생성 된이 설정 파일은 /etc/phpmyadmin/config.inc.php의 메인 설정 파일에 포함됩니다. phpMyAdmin 설정 스크립트는 우분투에서 버그가 있으며 기존 구성을로드하지 않습니다 (구성 할 때마다 처음부터 시작하도록 강제 함). 또한 생성되는 구성에는 복어 비밀과 같은 것이 포함되어 있으며 기본 구성 파일로 덮어 씁니다. config-db.php의 서버 값을 사용하는 주 구성 파일이 첫 번째 서버 (1)를 덮어 씁니다.
Michael Lawton

2

나는 다음을 가정했다.

  • /etc/phpmyadmin/ 구성을 추가하는 가장 논리적 인 장소가 될 것입니다.
  • /etc/phpmyadmin/config-db.php기본 (로컬?) 구성의 위치입니다. 이것은 디폴트이므로 하나의 db이므로
  • /etc/phpmyadmin/config.inc.php기본 데이터베이스를 읽습니다. 최소한이 것이 사용되므로 데이터베이스가 있습니다. 구성에서 무언가가 변경되면가 config-db.php변경되어 파일의 '로컬'변경 사항이 수정되지 않습니다

따라서 내 결론은이 부분 아래에 여분의 서버를 추가한다는 것입니다.

/* Configure according to dbconfig-common if enabled */
if (!empty($dbname)) {
    //reading from config-db.php
}

//$i++ was allready done in if above
//Adding extra servers
 $cfg['Servers'][$i]['host'] = 'serverhost.host.tld';
 $cfg['Servers'][$i]['extension'] = 'mysqli';
//...etc

이것은 최고의 장소처럼 보입니다.


1

phpMyAdmin 문서 에 따르면 파일에 $cfg['Servers']정의 된 배열 에서 여러 서버를 정의 할 수 있습니다 config.inc.php.


2
일반적인 phpMyAdmin 설치에서는 그렇습니다. 그러나 Ubuntu에는 config.inc.php 파일의 해당 부분을 생성하는 자체 구성 파일이 있으며 Ubuntu 구성을 재정의하지 않고 Ubuntu 구성 방법을 알고 싶습니다.
Mike Scott

내가 참조. 파일의 주석은입니다 You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. 나는 당신이 그것을 시도 가정? (지금은 프로덕션 시스템에서하지 마십시오.) 이외의 ... 수동으로 변경된 파일은 덮어 쓰기 전에 업데이트시 프롬프트되어야합니다.
Carsten Thiel

2
예, config-db.php 파일을 재생성 할 수 있지만 데이터베이스 연결 매개 변수 (/etc/dbconfig-common/phpmyadmin.conf)를 제공하는 구성 파일에는 하나의 데이터베이스 서버를 구성 할 공간 만 있습니다. 둘 이상의 데이터베이스 서버를 구성하는 방법을 알고 싶습니다.
Mike Scott

+ Scott과 마찬가지로 conf.d / 파일에서 $ cfg [ 'Servers']를 사용할 수 없었지만 config.inc.php에 넣을 때 제대로 작동했습니다. include 문이 엉망이되는 버그가 있다고 생각합니다.
flickerfly

1

기본 구성 파일은에 저장됩니다 /etc/phpmyadmin/config.inc.php. 이 파일에는

  • 복어의 비밀 /var/lib/phpmyadmin/blowfish_secret.inc.php
  • phpMyAdmin 설정 스크립트에서 생성 된 구성 (diegueus9의 방법) /var/lib/phpmyadmin/config.inc.php
  • DB에서 값 /etc/phpmyadmin/config-db.php에서 생성 /etc/dbconfig-common/phpmyadmin.conf하여 /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.conf사용하여 수정할 수 있습니다dpkg-reconfigure -plow phpmyadmin
  • 추가 구성 파일 /etc/phpmyadmin/conf.d/*.php

구성 스 니펫의 일부 예는 다음을 /usr/share/doc/phpmyadmin/examples포함 config.manyhosts.inc.php합니다. 이 파일은에 추가 할 수 있습니다 /etc/phpmyadmin/conf.d. 그것은 재설정하여 작동 i이의 호스트 설정을 무시하도록 모든 호스트를 작성하기 전에 1 변수 등을 /etc/phpmyadmin/config.inc.php.

보다 고급 구성을하려면 /etc/phpmyadmin/config.inc.php파일 을 변경 하고을 사용하여 다른 구성 확장명을 추가 할 수 있습니다 /etc/phpmyadmin/conf.d.

이전 구성 파일에 추가 구성에 대한 지원을 추가하려면 디렉토리 /etc/phpmyadmin/conf.d를 만든 다음 아래 PHP 코드를 아래에 추가하십시오 /etc/phpmyadmin/config.inc.php.

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.