리눅스 설치후 home 디렉토리 계정 생성후 다른 사용자 계정을 알 경우 접근이 가능함 수동적인 방법이지만 가장 확실한 방법이라 이런 식으로 처리함

01. 계정생성

useradd -m youngsam -g korea

-m 옵션 = home 폴더에 youngsam 폴더 생성 -g korea 옵션 korea 그룹 생성 옵션


02.  계정 비밀번호 설정

passwd youngsam


03. vi /etc/ssh/sshd_config

-1 #Subsystem sftp /usr/libexec/openssh/sftp-server
-2 Subsystem sftp internal-sftp

-1 을 주석처리 하고 -2 추가

04. 아래 쪽에 계정별로 추가

Match User youngsam
     ChrootDirectory /home/youngsam
     ForceCommand internal-sftp
     X11Forwarding no
     AllowTCPForwarding no

위 형식

05. service sshd restart 명령어 실행 ssh 재시작

06. 폴더 권한 소유자 설정

#chmod 755 /home/youngsam
 - 폴더 권한은 755
#chown root /home/youngsam
 - 폴더 소유자는 root
#mkdir /home/youngsam/www
 - www 폴더 생성
#chmod 775 /home/youngsam/www
 - 폴더 권한은 위와 다르게 쓰기권한을 포함한 775로 설정
아래는 생략해도 되지만 그룹 미지정 경우 처리
#chown youngsam:korea /home/youngsam/www
 - 폴더 소유자는 youngsam  그룹 korea 로 변경

ssh 나 sftp 등으로 접속 하면 상위 폴더 접근 차단됨

2020/05/22 13:09 2020/05/22 13:09
selenium 업데이트 하면서 기존 문법 경고창이 뜨기 시작 했다. 해결 방법

element에 따라 method를 따로 사용하는 것 보다 간결하다.

방법


from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_element(By.XPATH, '//button')
driver.find_element(By.ID, 'loginForm')
driver.find_element(By.LINK_TEXT, 'Continue')
driver.find_element(By.PARTIAL_LINK_TEXT, 'Conti')
driver.find_element(By.NAME, 'username')
driver.find_element(By.TAG_NAME, 'h1')
driver.find_element(By.CLASS_NAME, 'content')
driver.find_element(By.CSS_SELECTOR, 'p.content')
driver.find_elements(By.ID, 'loginForm')
driver.find_elements(By.CLASS_NAME, 'content')



By 속성
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
2020/04/23 12:53 2020/04/23 12:53
1. phpMyAdmin 을 실행하여 작업할 DB명을 선택합니다.

2. 상단의 "SQL" 탭을 클릭합니다.

3. 입력 상자에 아래의 코드를 넣습니다.

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') 
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='MyISAM';

4. "+옵션"을 클릭하여 "전체 텍스트"를 선택한후 "실행"을 클릭합니다.

5. "모두 보기"를 선택 후 "클립보드에 복사하기"를 클릭합니다.

6. 클립보드에 복사된 내용을 텍스트 에디터에 붙여넣고 "ALTER TABLE"로 시작하는 모든 행을 복사합니다.

7. 작업하는 DB명 선택후 "SQL" 탭을 클릭합니다.

8. 6번에서 복사한 내용을 입력 상자에 붙여넣고 "실행"을 클릭합니다.
2020/03/10 17:46 2020/03/10 17:46
기존 my.cnf  에서 /etc/mysql/mysqld.cnf 변경 되었습니다.

1. Mysql의 최대 접속자 수 확인하기.
show variables like '%max_connection%';
max_connections는 mysql에서 connect할 수 있는 최대 소켓수를 정의한 값입니다.
접속 최대수를 초과해 접속 시도를 하는 경우 "too many connections error"이 발생 합니다.
 
2. 접속수 보기.
show status like 'Max_used_connections';
 
3.  Connection 설정을 위한 변수.
 
- variables (예 show variables like '%max_connection%';)
 
max_connections – 최대 동시 접속 가능 수. max_connection 수가 늘어 나면 innodb 의 thread별 메모리 사용량이 늘어나 같이 고려해야 합니다.
wait_timeout – 지정된 시간 동안 아무런 요청 없이 대기하는 경우 MySQL 서버는 해당 커넥션을 강제로 종료해 버립니다. (기본값은 28800초(8시간))
thread_cache_size – thread 재 사용을 위한 thread pool, 최대 몇 개 까지의 thread를 pool에 보관할지 설정.
 
- status (예 show status like '%clients%';)
 
Aborted_clients : 클라이언트 프로그램이 비 정상적으로 종료된 수
Aborted_connects : MySQL 서버에 접속이 실패된 수
Max_used_connections : 최대로 동시에 접속한 수
Threads_cached : Thread Cache의 Thread 수
Threads_connected : 현재 연결된 Thread 수
Threads_created : 접속을 위해 생성된 Thread 수
Threads_running : Sleeping 되어 있지 않은 Thread 수
 
4. 튜닝
Cache Miss Rate(%) =  Threads_created / Connections * 100
Connection Miss Rate(%) = Aborted_connects / Connections * 100
Connection Usage(%) = Threads_connected / max_connections * 100
 
- Connection Usage(%)가 100% 라면 max_connections 수를 증가시켜 주십시요. Connection 수가 부족할 경우 Too Many Connection Error 가 발생합니다.
 
- DB 서버의 접속이 많은 경우는 wait_timeout 을 최대한 적게 (10~20 정도를 추천) 설정하여 불필요한 연결을 빨리 정리하는 것이 좋습니다. 그러나 Connection Miss Rate(%) 가 1% 이상이 된다면 wait_timeout 을 좀 더 길게 잡는 것이 좋습니다.
 
- Cache Miss Rate(%) 가 높다면 thread_cache_size를 기본값인 8 보다 높게 설정하는 것이 좋습니다. 일반적으로 threads_connected 가 Peak-time 시 보다 약간 낮은 수치로 설정하는 것이 좋습니다.
 
- MySQL 서버는 외부로 부터 접속 요청을 받을 경우 인증을 위해 IP 주소를 호스트네임으로 바꾸는 과정을 수행하여 접속시에 불필요한 부하가 발생하게 됩니다. skip-name-resolve를 설정하시고 접속시에 IP 기반으로 접속을 하게 되면 hostname lookup 과정을 생략하게 되어 좀 더 빠르게 접속을 하실 수 있습니다.
 
 
5. Aborted_clients 값이 증가하는 원인
클라이언트 프로그램이 mysql_close() 를 호출하지 않고 종료.
클라이언트 프로그램에서 wait_timeout 혹은 interactive_timeout 시간동안 요청이 없는 경우.
전송도중 클라이언트 프로그램이 비정상적으로 종료.
비정상적인 패킷을 가진 통신 시도.
접속을 시도한 사용자가 데이터베이스에 접근할 권한이 없거나, 패스워드가 잘못된 경우.
접속을 시도하는 동안 connect_timeout 시간을 초과.
live 서비스중 해당 값이 과도하게 증가 된다면 해킹 시도에 대한 의심을 해봐야 합니다.


------------------------------------------------------------------------------------------------------------------------------------------------------------------
mysql 버전업 되면서 패스워드 정책이 변경되었다 . 이를 무시하려면 아래 내용을 추가해야 합니다.


[mysqld] 
sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
2020/02/18 10:08 2020/02/18 10:08