database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Tutorials 16577 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 16577
MySQL 원격접속과 루트패스분실 및 소켓에러에 대한 팁
작성자
정재익(advance)
작성일
2002-07-22 06:37
조회수
10,281

MySQL 원격접속과 루트패스분실 및 소켓에러에 대한 팁

 

[MySQL 원격접속사용하기]

 

DB서버가 분리되어 운영될 때 원격의 호스트가 해당 디비서버에 접속하기 위한 설정방법이다.

 

+ 원격의 디비에 접속하기위한 Host1, Host2, Host3가 있고 DB서버인 Host4가 있다고 가정했을 때..

원격디비서버에서 User테이블에 원격접속을 허용할 호스트를 입력해주고 DB 테이블에서 사용자에게

지정된 모든 호스트를 지정해주거나 원하는 호스트를 지정해 주면 됩니다.

 

+ DB 서버설정하기.

 

sueni@bbung ...]# mysql -uroot -p mysql

password: *********

 

# manpage라는 하나의 사용자를 등록 후 해당사용자에 대한 정보로 원격에서 접속하도록 설정해

보겠다.

 

먼저 DB를 하나 만들도록 합니다.

 

mysql> create database manpage;

 

mysql> insert into user (host,user,password) values (\localhost\,\manpage\,password(\manpage\));

 

mysql> insert into user (host,user,password) values (\Host1\,\manpage\,password(\manpage1\));

 

mysql> insert into user (host,user,password) values (\Host2\,\manpage\,password(\manpage2\));

 

mysql> insert into user (host,user,password) values (\Host3\,\manpage\,password(\manpage3\));

 

# 위에서 패스워드에 1,2,3이 붙은것은 하나의 사용자에 대해 호스트별로 패스워드를 다르게 줄수 있

다는것을 보여주는 것입니다.

 

# DB 테이블 정보입력

mysql> insert into db values

(\localhost\,\manpage\,\manpage\,\y\,\y\,\y\,\y\,\y\,\y\,\y\,\y\,\y\,\y\);

 

# 해당사용자의 user테이블에 지정된 모든 원격지 호스트에 대한 접속을 허용하도록 설정한다.

 

mysql> update db set host=\%\ where db=\manpage\;

 

mysql> flush privileges

 

# manpage 사용자에게 지정된 호스트를 보도록 하자.

mysql> select host,user from user where user=\manpage\;

+------------------------+---------+

| host | user |

+------------------------+---------+

| localhost | manpage |

| Host1 | manpage |

| Host2 | manpage |

| Host3 | manpage |

+------------------------+---------+

 

# Host1,2,3에 대해 각각의 사용자 홈계정에 다음과 같은 index.php파일을 만들어서 테스트해보자.

<?

 

$db_conn = mysql_connect(\원격DB호스트\, \User\, \Passwd\);

 

mysql_select_db(\DB이름\, \$db_conn\);

 

if (!$db_conn) { echo \디비연결실패\; }

 

else { echo \디비연결성공\; }

 

?>

 

 

위와 같은 파일을 만들어 테스트해보면 각각의 호스트마다 서로다른 패스워드로 원격접속이 가능함

을 볼수 있다.

 

원격디비접속은 생각외로 쉽다. :)

 

+ 팁 :

 

+ MySQL Root 패스워드 분실시...

 

실행중인 MySQL 데몬을 정지시킨 후 -Sg (Skip GrantTable)옵션을 주고 MySQL을 기동한다.

 

sueni@bbung ...]# /etc/rc.d/init.d/mysqld stop 또는

sueni@bbung ...]# mysqladmin -uroot -p shutdown

 

sueni@bbung ...]# safe_mysqld -Sg --language=korean &

 

sueni@bbung ...]# mysql

 

위와 같이 Sg 옵션을 주면 사용자 권한을 체크하지 않으므로 MySQL에 접속이 가능해진다.

 

mysql> update user set password=password(\root\) where user=\root\;

 

위와 같이 Root 패스워드를 업데이트한 후 MySQL데몬을 Sg 옵션없이 정상적으로 기동하도록한다.

 

 

+ MySQL Socket 에러 발생시...

다음 내용은 웹서핑중 소켓에러에 대한 해결방법을 모아놓은 것입니다.

 

[에러 내용] :

Warning: Can\t connect to local MySQL server through socket \/home/manpage/mysql.sock\ (111) in

...

111에러발생...

 

[문제의 원인]

실제로 mysqld 에 의한 socket 파일은 /tmp/mysql.sock 에 존재하는데 PHP 나 mysql 과 같은 프로그램들은

그 파일을 /var/lib/mysql/mysql.sock 에서 찾는다.

그러니 당연히 mysqld 와 의사소통이 될리가 없고, 접속이 안된다고 에러가 납니다.

 

[해결방법]

1. ln -sf /tmp/mysql.sock /var/lib/mysql/mysql.sock

이 해결법은 가장 간단하게 할 수 있지만 문제점은 리부팅 되고 나면 그때마다 다시 이 soft link 를 걸어 줘야 합니다.

왜냐하면 이 파일은 일반적인 파일이 아닌 unix socket 파일이기 때문입니다.

 

2. msyqld 기동시에 --socket=/var/lib/mysql/mysql.sock 라는 옵션을 추가

이 방법은 강제적으로 소켓 파일을 원하는 디렉토리에 만들도록 해 줍니다.

그러므로 mysqld 의 소켓파일이 저 디렉토리에 생성만 된다면 문제는 해결이 되겠지요.

 

3. PHP 연동시 client 측에서 socket 파일의 위치를 지정해 주는 방법

$conn = mysql_connect(\localhost:/tmp/mysql.sock\,\db_user\,\db_passwd\);

이 방법은 클라이언트 측에서 서버측의 소켓파일의 위치를 명시해 주는 방법입니다.

 

/var/lib/mysql.sock 위치로 보아 MySQL이 RPM을 설치되어 있을때에 해당하는 것 같습니다.

그리고 소켓에러 발생은 MySQL이 정상적으로 기동되지 않았을때에도 발생을 합니다.

 

+GNU GPL. Linux chobo. www.manpage.biz 오수영:)

[Top]
No.
제목
작성자
작성일
조회
16581NT4.0+JDK+JSDK+apache+tomcat+mysql+jdbc
정재익
2002-07-22
8288
16580MySQL 기본사용법
정재익
2002-07-22
22303
16578mSQL 자료를 mySQL 로 변경하기
정재익
2002-07-22
6319
16577MySQL 원격접속과 루트패스분실 및 소켓에러에 대한 팁
정재익
2002-07-22
10281
16575APM + Zend Optimizer + gd + imap + Tomcat + mysql용JDBC + JDK1.3 설치하기
정재익
2002-07-22
6887
16574IIS(ASP) + MYSQL(linux/unix) 연동방법
정재익
2002-07-22
7106
16573OPENLINK ODBC 를 이용한 LINUX (SUN) 웹서버 에서 NT의 MS-SQL 서버 접속하기
정재익
2002-07-22
9876
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.053초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다