여러 서버에 액세스하도록 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.