오랜만에 CentOS 를 설치 후 몇번의 네트워크 삽질 후 

Local host 에서 putty 로 접속을 마쳤다.


FTP도 필요해서 ftp 설치를 했더니 정리가 필요해서 아래와 같이 정리해 본다.


FTP 설치

yum -y install vsftp ftp




FTP 설정

vi /etc/vsftpd/vsftpd.conf


...
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
...

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES


방화벽 허용(20, 21 포트 허용)

맨아래에 추가

...

-A INPUT -m state --state NEW -m udp -p udp --dport 20 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 21 -j ACCEPT




FTP 를 항상 시작 하도록 설정

[root@localhost ~]# chkconfig --level 2345 vsftpd on


root 로 접속 하기 위해서 아래 파일들에서 root 삭제

[root@localhost ~]# ls /etc/vsftpd/

ftpusers                user_list               vsftpd.conf             vsftpd_conf_migrate.sh


아래 2개의 파일에서 vi로 열어 root 삭제


[root@localhost ~]# vi /etc/vsftpd/ftpusers

[root@localhost ~]# vi /etc/vsftpd/user_list


서비스 재시작

방화벽 설정 

[root@localhost ~]# vi /etc/sysconfig/iptables


ftp 재시작

[root@localhost ~]# service vsftpd restart





500 OOPS 대처 방안

>root 로 FTP 접속 시 아래와 같이 접속 오류가 발생


응답: 331 Please specify the password.

명령: PASS ******

응답: 500 OOPS: cannot change directory:/root

오류: Critical error: 서버에 연결하지 못함


위와 같이 뜨면 아래와 같이 확인 후 설정 변경

[root@localhost ~]# getsebool -a | grep ftp

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

ftpd_use_fusefs --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off


[root@localhost ~]# setsebool allow_ftpd_full_access on

[root@localhost ~]# service vsftpd restart



[참고]

http://matthew.kr/centos-%EC%9D%98-vsftpd-%EC%A0%91%EC%86%8D%EC%8B%9C-500-oops-cannot-change-directoryroot-%EC%97%90%EB%9F%AC/


반응형

'OS > LINUX' 카테고리의 다른 글

[펌]PuTTY 한글 깨짐 문제 해결하기  (1) 2016.02.23
mkfs 로 생성 시 오류  (0) 2015.10.15

MYSQL 을 linux 상에서 접속을 할줄 몰라 열심히 삽질 하다가 겨우 찾아냈다.


사실 말하면 그동안 동료가 알려줬지만 제대로 못 외워서 삽질한게 더 맞는 것 같다.

역시 삽질하면서 배워야지 자기 것이 되는게 맞는 말인듯....


일반적으로 mysql 접속은 아래와 같다.


/usr/local/mysql/bin/mysql -u user01 -p user_db


-u 뒤에는 유저명

-p 뒤에는 패스워드를 작성하면 된다.


하지만 나는 진행할려고 할때마다 아래와 같은 에러가 발생했다.


[root@devDB ~]# mysql -h localhost -u root -p

Enter password:

ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


왜이리 접속이 안되서 열심히 찾아보이 socket 을 이용해서 접속하는 것이기에,

해당 socket파일에 명시가 되어 있지 않다고 되어 있다.


Oracle 과 비교하면 리스너와 같은것으로 보면 될까?? 리스너 포트가 변경되었을 때

리스너 포트를 명시하는 경우다.


아래와 같이 진행하면 된다.

해당 개발DB의 경우 cnf 파일에 명시되어 있는데 cnf 파일을 보면 아래와 같다


...

[mysqld7100]

socket          = /tmp/mysql_1100.sock

port            = 7100

pid-file        = /home/DATABASE/DBPart/mysql_1100.pid

datadir         = /home/DATABASE/DBPart/

server-id       = 1100

...


그래서 아래와 같이 시도를 하면 접속이 된다.


mysql -u root -p -S /tmp/mysql_1100.sock


참고로 -p 뒤에 비밀번호를 붙이지 않으면 비밀번호를 묻게 된다.



mysql -u user01 -p user_pw

mysql : MYSQL 데이터베이스 클라이언트 프로그램

-u : MYSQL 사용자명을 지정하기 위한 옵션

-p : 지정한 사용자의 MYSQL 패스워드를 입력하기 위한 옵션

user_db : 지정한 사용자가 사용할 MYSQL 데이터베이스명


Oracle 하다가 Mysql 를 하려고 하니 참 낯설다-ㅋㅋㅋ


반응형

어떤 DBMS이든지 마찬가지겠지만, DBMS를 효율적으로 적은 리소스로 가장 좋은 성능을 내게끔 사용하기 위해서 가장 먼저 해야 하는 일은 어떠한 구조로 만들어 졌는지 확인하는 것이다. DBMS의 특성을 확인하여, 그 DBMS의 장점과 단점을 파악하고, 내가 원하는 서비스의 성격에 맞게 DBMS를 선택하여 사용하면, 훨씬 더 효율적으로 데이터를 관리 할 수 있다. 

MySQL도 DBMS로서 다른 DBMS와 비교되는 구조와 특성을 가지고 있다. 이러한 특성을 미리 나열하기 전에 MySQL의 내부 구조에 대해 먼저 알아보자. 

 

[그림 1-1]

[그림 1-1]은 MySQL Conference에서 MySQL 내부 구조 설명시 MySQLAB에서 사용했던 그림이다. 여기에서 알수 있는 것은 MySQL Server의 내부의 모듈들은 컴포넌트 형태로 되어있어서 여러 기능들이 퍼즐 형식으로 엮여져 있다는 것이다. 

퍼즐 형태로 만들어진 내부 모듈들로 인해 내부적으로 다른 스토리지 엔진을 추가하거나, 기능을 추가할때, 다른 모듈에 크게 영향을 주거나 하는 일이 적은 것을 확인할 수 있다. 

맨 위의 오른쪽에 표시된 SQL Control interface는 MySQL Client와 MySQL Server 사이에 존재하는 Interface로서 백업을 진행할 때나, 상태 정보를 보고 싶을때와 같은 경우에 컨트롤 하는 문장들을 의미한다. 

사용자 삽입 이미지

 

[그림 1-2]
[그림 1-2] 도 MySQLAB에서 MySQL Server와 Application과의 관계및 여러 Tool들을 설명하기 위해 사용하는 그림 중의 하나이다. 

크게 MySQL은 세 단계로 나누어 생각할 수 있다. 첫번째는 위의 그림에서 Connector로서 표현한 Client 부분, 두번째는 MySQL Server의 머리부분에 해당하는 부분으로 SQL을 분석하여 실행계획을 만드는 부분, 세번째는 데이터를 저장하고 추출하는 Storage Engine 부분이다. 

맨 위의 Connector는 MySQL Server에 접근하기 위해 Application에서 설치하여 사용할 수 있는 모듈들을 나타낸다. C API, JDBC등 언어에 따라 여러가지 Connector들을 사용할 수 있고, 이 Connector들을 사용하여 MySQL Server와 통신할 수 있다. 

두번째 부분는 MySQL의 인스턴스 부분으로 Client로 부터 들어온 쿼리를 분석하고 최적화 하여 실행계획을 만들고, 필요할 경우 메모리에 cache하는 기능을 담당하는 부분이다. 

세번째 부분은 Storage Engine 영역으로 데이터를 저장하고, 추출하는 부분을 담당하는 부분으로 나눌 수 있다. 위의 그림에서 보는 것과 같이 스토리지 엔진의 종류는 다양하다. MySQLAB에서 만든 스토리지 엔진도 있고, 다른 서드파티에서 만든 스토리지 엔진도 있다. 화면에 보이는 스토리지 엔진은 대부분 MySQLAB에서 만든 것들이다. 

각각의 스토리지 엔진은 그 데이터 저장방법 및 추출 방법에 장점과 단점을 가지고 있다. 그렇기 때문에 실제 서비스에 사용할 때에는 스토리지 엔진 특성에 맞게 취사 선택을 잘 해야 한다. 

실제 한국에서 웹 서비스에 많이 사용하는 스토리지 엔진은 MyISAM과 InnoDB이다. 그러므로 추후에 강좌에서는 MyISAM과 InnoDB에 대해 자세히 다루도록 할 예정이다. 

[그림 1-2]의 MySQL Server 부분에 표현된 SQL 분석 부분에 관련된 부분을 자세히 살펴보도록 하자. 

먼저 Connection Pool은 MySQL 내부에서 관리하는 Connection Pool을 말하는 것으로 새로운 유저의 커넥션 쓰레드를 DB에 할당하여 저장하는 부분을 말한다. Connection을 생성하게 되면 자동적으로 그 Connection에서 실행할 SQL 작업을 위한 메모리가 자동적으로 할당된다. 

SQL Interface는 DML, DDL, Stored Procedure, View, Cursor, Trigger등의 지원을 위한 Interface부분을 말하고, 모든 SQL 함수에 대한 지원을 제공하는 모듈을 말한다. 

Parser/Optimizer는 SQL의 권한을 확인하고, SQL문을 데이터베이스 내부 언어로 변환하고, 수행 경로를 분석하는 등 SQL문을 실행을 위한 준비 작업을 하는 부분을 말한다. 이 부분은 모든 스토리지 엔진에 동일하게 적용되기 때문에 스토리지 별로 별도의 코딩이 필요없다. 

메모리 캐쉬 부분은 빈번하게 사용되는 인덱스나 데이터를 빠르게 접근하게 하기 위해 메모리에 저장하는 영역을 말하며, 스토리지 엔진에 따라 그 기능은 조금씩 차이가 난다. 


반응형

'MySQL' 카테고리의 다른 글

[펌] [MySQL] 5.1의 InnoDB에서 MySQL 테이블 최적화하기  (0) 2016.03.03
[MySQL] DUMP (mysqldump) export  (1) 2016.02.25
[MySQL] error 1130  (0) 2016.02.19
[MySQL] 임시 DB 설치 3.23.58 (3.*) / python  (0) 2016.02.19
[MYSQL] Socket 접속  (0) 2016.02.11

+ Recent posts