pma계정에 권한 부여하기

긁어온 글(1)

원문제목 [mysql] PMA Database … not OK , General relation features Disabled

긁 어온 주소 :      (2018. 8. 13. : 접속이 불가능한 것으로 확인되어 링크를 지움니다.)

$cfg[‘Servers’][$i][‘pmadb’] string 

 

Starting with version 2.3.0 phpMyAdmin offers a lot of features to work with master / foreign – tables. To use those as well as the bookmark feature you will need to create a new db. 

$cfg['Servers'][$i]['pmadb']

 phpMyAdmin 2.3.0부터 주/외래 테이블을 가지고 작업하기 위한 많은 기능들이 제공된다. 북마크 기능과 같은 이러한 기능들을 사용하기 위해서는 새로운 데이터베이스를 작성할 필요가 있다. 

주/외래 테이블이란 관계형 데이터베이스를 만들 때 사용하는 기능으로, 자세히 설명하면 복잡하므로 간략히 설명하겠습니다. 

단순히 게시판이나 회원 관리 정도만 하고자 한다면 이런 기능을 신경쓰실 필요는 없습니다. 다만 데이터베이스가 두 개 이상의 테이블 혹은 데이터베이스를 동시에 사용해야 할 필요가 있다면 테이블간에 관계라는 것을 맺어야 합니다. 
쇼핑몰의 예를 들어 보겠습니다. 
쇼핑몰은 회원정보, 상품정보, 장바구니정보, 결제정보 등 여러가지 테이블을 동시에 사용할 필요가 있습니다. 
장바구니에 상품을 하나 등록했다고 생각해 보죠 . 이때 장바구니에 상품에 대한 정보 전부, 혹은 구매한 회원에 대한 정보 모두를 가질 필요는 없습니다. 
다만 장바구니정보 테이블에는 회원정보 중 ID만 갖고 상품정보 중 상품 ID만 갖게 됩니다. 
나중에 장바구니 테이블에 등록한 회원정보 ID를 매개로 회원정보 테이블과 연결하게 되면 그 장바구니에 등록된 상품을 장바구니에 등록한 회원의 정보를 알 수 있게 되는 것입니다. 

무슨 말인지 모르시겠다구요? 
사실 간단히 게시판에서 설명드리기 어려운 점이 있으므로, 좀 더 알고 계신 분은 “관계형 데이터베이스” 관련 도서를 참조하십시오. 

그럼 해결방법을 알려드리겠습니다. 
먼저 오류가 난다고 해서 MySQL이 제대로 작동하지 않는 것은 아니라는 점부터 강조하겠습니다. 
오류가 난 부분은 위에 설명한 “관계”에 대한 다양한 기능이 작동하지 않는 다는 의미입니다. 

두 가지 선택이 있습니다. 
1. 오류 메시지를 보이지 않게 하고 싶다.(phpMyAdmin의 향상된 기능은 필요 없다) 
2. “관계”에 대한 phpMyAdmin의 향상된 기능을 사용하고 싶다. 

1번(오류메시지만 사라지게 하는 방법)에 대한 해결방법입니다. 
이것은 아주 간단합니다. 
config.inc.php에서 다음의 항목을 찾으십시오 

코드: 
$cfg['PmaNoRelation_DisableWarning'] = FALSE; 

이 부분을 다음과 같이 바꿔줍니다. 

코드: 
$cfg['PmaNoRelation_DisableWarning'] = TRUE; 

2번(phpMyAdmin의 향상된 기능 사용)에 대한 해결방법입니다. 

이건 좀 복잡합니다. 사실 설명서에 나온대로 따라하면 되지만, 
저도 몇 번의 시행착오를 했습니다 😥 

먼저 추가 기능 관련 데이터베이스를 만드셔야 합니다. 
APMSetup의 메뉴 > 응용프로그램 > MySQL Consol로 데이터베이스에 접속하십시오. 
(저는 콘솔로 했습니다만, phpMyAdmin의 기능을 잘 이용하시면 될 것 같습니다) 

코드: 
CREATE DATABASE phpmyadmin; 

그리고 이 데이터베이스를 사용할 수 있는 사용자를 하나 만드셔야 합니다. 

코드: 
GRANT SELECT,INSERT,UPDATE,DELETE ON phpmyadmin.* to 'pma\@\localhost'; 

-> phpmyadmin의 모든 테이블(*)에서 SELECT, INSERT, UPDATE, DELETE 명령을 내릴 수 있는 권한을 로컬호스트의 pma라는 이름의 사용자에게 부여한다는 뜻입니다. 

그리고 나서 config.inc.php의 다음 항목을 수정합니다. 

코드: 
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; 

다음은 phpmyadmin 데이터베이스에 테이블을 만들어야 하므로 다음과 같이 합니다. 

코드: 
use phpmyadmin 

다음 쿼리들을 차례로 실행합니다. 

코드: 

CREATE TABLE `pma_bookmark` (
id int(11) DEFAULT '0' NOT NULL auto_increment,
dbase varchar(255) NOT NULL,
user varchar(255) NOT NULL,
label varchar(255) NOT NULL,
query text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM COMMENT='Bookmarks';

코드: 


CREATE TABLE `pma_relation` (
`master_db` varchar(64) NOT NULL default '',
`master_table` varchar(64) NOT NULL default '',
`master_field` varchar(64) NOT NULL default '',
`foreign_db` varchar(64) NOT NULL default '',
`foreign_table` varchar(64) NOT NULL default '',
`foreign_field` varchar(64) NOT NULL default '',
PRIMARY KEY (`master_db`, `master_table`, `master_field`),
KEY foreign_field (foreign_db, foreign_table)
) TYPE=MyISAM COMMENT='Relation table';

코드: 


CREATE TABLE `pma_table_info` (
`db_name` varchar(64) NOT NULL default '',
`table_name` varchar(64) NOT NULL default '',
`display_field` varchar(64) NOT NULL default '',
PRIMARY KEY (`db_name`, `table_name`)
) TYPE=MyISAM COMMENT='Table information for phpMyAdmin';

코드: 


CREATE TABLE `pma_table_coords` (
`db_name` varchar(64) NOT NULL default '',
`table_name` varchar(64) NOT NULL default '',
`pdf_page_number` int NOT NULL default '0',
`x` float unsigned NOT NULL default '0',
`y` float unsigned NOT NULL default '0',
PRIMARY KEY (`db_name`, `table_name`, `pdf_page_number`)
) TYPE=MyISAM COMMENT='Table coordinates for phpMyAdmin PDF output';

코드: 

CREATE TABLE `pma_pdf_pages` ( 
`db_name` varchar(64) NOT NULL default '', 
`page_nr` int(10) unsigned NOT NULL auto_increment, 
`page_descr` varchar(50) NOT NULL default '', 
PRIMARY KEY (page_nr), 
KEY (db_name) 
) TYPE=MyISAM COMMENT='PDF Relationpages for PMA'; 

코드: 


CREATE TABLE `pma_column_comments` (
id int(5) unsigned NOT NULL auto_increment,
db_name varchar(64) NOT NULL default '',
table_name varchar(64) NOT NULL default '',
column_name varchar(64) NOT NULL default '',
comment varchar(255) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY db_name (db_name, table_name, column_name)
) TYPE=MyISAM COMMENT='Comments for Columns';

다음은 config.inc.php에서 이 정보를 입력해 주셔야 합니다. 

코드: 

 

$cfg['Servers'][$i]['bookmarktable'] = 'bookmark'; 
$cfg['Servers'][$i]['relation'] = 'pma_relation'; 
$cfg['Servers'][$i]['table_info'] = 'pma_table_info'; 
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; 
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; 
$cfg['Servers'][$i]['column_comments'] = 'pma_column_comments'; 

 


마지막으로 하나가 남았습니다. 
pma 계정이 phpmyadmin 데이터베이스를 컨트롤할 수 있도록 config.inc.php에 control user로 등록합니다. 

코드: 

$cfg['Servers'][$i]['controluser'] = 'pma'; 
$cfg['Servers'][$i]['controlpass'] = ''; // pma의 암호를 설정하셨다면 이곳에 등록하십시오.

 

글이 좀 길었습니다만, 
일단 한 번 해 보시면, 오류 메시지 없이 phpMyAdmin의 향상된 기능을 이용하실 수 있으실 것입니다.

소셜댓글

Loading Disqus Comments ...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.