|
|
*** Ubuntu에 설치 **********************************
# 설치 전 패키지 업데이트
user1@myubuntu:~$ sudo apt update 설치 가능한 패키지 리스트를 최신화
user1@myubuntu:~$ sudo apt upgrade 선택적 : 패키지를 새 버전으로 업그레이드. 실제 업데이트. 상위버전으로 갱신도...
# MariaDB 서버 설치
user1@myubuntu:~$ sudo apt install mariadb-server
# MariaDB 클라이언트 설치
user1@myubuntu:~$ sudo apt install mariadb-client
# 클라이언트 설치 시 설정에 대해 묻는데, 만약 묻지 않는다면 아래 명령어를 수행한다.
# MariaDB secure 설정
user1@myubuntu:~$ sudo mysql_secure_installation
| 몇 가지 중요한 보안 설정을 적용하는 데 사용 Enter current password for root (enter for none): 처음 설치할 때는 root 비번이 없으므로 엔터 Switch to unix_socket authentication [Y/n] 현재 루트 계정이 이미 보호되고 있는 상태라고 메시지가 알려주고 있으므로 n 1. root 비밀번호 변경 질문: Change the root password? [Y/n] y 설명: MariaDB의 root 사용자 비밀번호를 설정하거나 변경하는 단계입니다. 보안 강화를 위해 새 비밀번호를 설정하고 이를 다시 입력해 확인합니다. 2. 익명 사용자 제거 질문: Remove anonymous users? [Y/n] y 설명: MariaDB 설치 시 기본적으로 생성된 익명 사용자를 제거하는 단계입니다. 익명 사용자는 사용자 계정 없이 데이터베이스에 접근할 수 있기 때문에 보안 위험을 초래할 수 있습니다. 이를 제거하는 것은 보안상 매우 중요한 작업입니다. 3. root 사용자의 원격 접속 차단 질문: Disallow root login remotely? [Y/n] y 설명: root 사용자가 원격에서 MariaDB에 로그인할 수 없도록 설정하는 단계입니다. 이를 통해 외부 네트워크에서 root 계정에 대한 공격을 방지할 수 있습니다. 로컬 호스트에서만 root로 로그인할 수 있도록 제한하는 것이 일반적으로 권장됩니다. 4. 테스트 데이터베이스 제거 질문: Remove test database and access to it? [Y/n] y 설명: MariaDB 설치 시 기본적으로 생성되는 test 데이터베이스를 제거하는 단계입니다. 이 데이터베이스는 주로 테스트 용도로 제공되며, 운영 환경에서는 제거하는 것이 좋습니다. 이를 제거하여 보안성을 높입니다. 5. 권한 테이블 재적용 질문: Reload privilege tables now? [Y/n] y 설명: 지금까지 수행한 보안 설정(사용자 제거, 비밀번호 변경 등)이 즉시 반영되도록 권한 테이블을 다시 로드하는 단계입니다. 이 작업을 통해 설정이 MariaDB에 즉시 적용됩니다. Ubuntu Mariadb 설치 관련 https://velog.io/@xangj0ng/Linux-Ubuntu-Mariadb-%EC%84%A4%EC%B9%98 |
# MariaDB 활성화
user1@myubuntu:~$ sudo systemctl enable mariadb
# MariaDB 시작
user1@myubuntu:~$ sudo systemctl start mariadb
# MariaDB 서비스 상태 확인
user1@myubuntu:~$ sudo systemctl status mariadb
# MariaDB 서비스 중지
user1@myubuntu:~$ sudo systemctl stop mariadb
# MariaDB 서비스 재시작
user1@myubuntu:~$ sudo systemctl restart mariadb
# MariaDB 서버에 접속
user1@myubuntu:~$ sudo mariadb -u root -p
MariaDB [(none)]> create database test;
MariaDB [(none)]> use test;
Database changed
ariaDB [ test ]> create table sangdata(code int primary key,sang varchar(20),su int,dan int);
MariaDB [ test ]> insert into sangdata values(1,'pen',5,5000);
MariaDB [ test ]> insert into sangdata values(2,'book',5,5000);
MariaDB [ test ]> select * from sangdata;
+------+------+------+------+
code | sang | su | dan
+------+------+------+------+
1 | pen | 5 | 5000
2 | book | 5 | 5000
+------+------+------+------+
#사용자 생성
로컬접속용 : CREATE USER '사용자명'@'localhost' IDENTIFIED BY '비밀번호';
외부접속용 : CREATE USER '사용자명'@'%' IDENTIFIED BY '비밀번호';
사용자 확인 : SELECT HOST, USER, PASSWORD FROM USER;
#사용자 삭제
로컬접속용 : DROP USER '사용자명'@'localhost';
외부접속용 : DROP USER '사용자명'@'%';
# 권한 부여
로컬접속용 : GRANT ALL PRIVILEGES ON 데이터베이스명.* TO '사용자명'@'localhost';
외부접속용 : GRANT ALL PRIVILEGES ON 데이터베이스명.* TO '사용자명'@'%';
# 갱신 : FLUSH PRIVILEGES;
👁🗨 ip 주소 확인
~ $ ifconfig
~ $ sudo apt install net-tools
~ $ ifconfig
👉 우분투 MariaDB 서버의 외부 접속 관련 설정 문제
1) 기본적으로 127.0.0.1로 설정되어 있다면, 이를 0.0.0.0으로 변경하여 모든 IP 주소에서 접근 가능하게 하거나, 특정 IP 주소에서만 접근 가능하도록 해당 IP로 설정할 수 있다.
~$>sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf 하고 bind-address 설정을 확인한다.
bind-address = 0.0.0.0
파일을 저장하고 나서 MariaDB 서버를 재시작
~$>sudo systemctl restart mariadb
2) MariaDB 사용자 계정 문제 : root 사용자 계정이 localhost에서만 접속 가능하도록 설정되어 있을 수 있다. 원격에서 접속할 수 있도록 사용자 계정을 설정해야 한다.
해결 방법: MariaDB에 접속한 후, root 사용자의 원격 접근을 허용
~$>sudo mariadb -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_root_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3) 방화벽 설정 문제 : 우분투의 방화벽(UFW)이 활성화되어 있는 경우, MariaDB의 포트(기본적으로 3306번)가 차단되어 있을 수 있다. MariaDB 포트를 방화벽에서 열어준다.
~$>sudo ufw allow 3306/tcp
~$>sudo ufw reload
~$> sudo ufw enable 방화벽을 활성화
~$>sudo ufw status ufw 상태 확인
참고 : AWS EC2 서버에서는 EC2 인스턴스와 별개로 실행 중인 ubuntu에 3306 포트를 허용해 주어야 한다.
| 참고 : ufw(Uncomplicated Firewall, 단순한 방화벽) : Ubuntu와 같은 Linux 배포판에서 iptables 방화벽을 쉽게 설정하고 관리할 수 있도록 도와주는 도구이다. 복잡한 방화벽 설정을 간소화하여 관리하기 쉽게 도와준다. ufw 특징: - 초보자도 쉽게 방화벽 규칙을 설정할 수 있도록 간단한 명령어를 제공. - iptables와 같은 강력한 방화벽 백엔드를 기반으로 작동. - 기본적으로 직관적이고 읽기 쉬운 명령 구문 제공. 예: - 방화벽 활성화: sudo ufw enable - 방화벽 비활성화: sudo ufw disable - 규칙 확인: sudo ufw status - 포트 허용: sudo ufw allow <포트번호> |
4)
> mariadb -h 192.168.80.129 -u root -p 참고 : AWS의 리눅스라면 퍼블릭 IPv4 주소를 적어 준다.
위와 같은 명령으로 원격 접속시 ERROR 2026 (HY000): TLS/SSL error: SSL is required, but the server does not support it
에러가 발생하는 경우에는 client에서 아래와 같은 방법으로 접근하면 된다.
> mariadb -h 192.168.80.129 -u root -p --ssl=FALSE
--ssl=FALSE 옵션은 SSL 연결을 강제로 비활성화한다
참고 : SSL(Secure Sockets Layer)
: 인터넷 상에서 데이터를 안전하게 전송하기 위해 사용하는 암호화 기술이다. 현재는 TLS (Transport Layer Security)라는 더 안전한 기술로 발전했지만, 많은 사람들이 여전히 SSL이라는 용어를 사용하고 있다. SSL/TLS는 클라이언트(예: 브라우저, 데이터베이스 클라이언트)와 서버 사이의 통신을 암호화하여 데이터가 중간에서 도청되거나 변조되지 않도록 보호한다.
* MariaDB에서 SSL 연결이 필요한 경우
- 데이터베이스가 외부 네트워크(예: 인터넷)에 노출된 경우
- 클라이언트와 서버가 서로 다른 네트워크에 위치한 경우
- 민감한 데이터를 전송하는 경우(예: 금융, 의료, 국방 ...)
💕 MariaDB(MySQL) 서버 외부접속 허용 권한 - 접속 불가능 현상 해결 방법 (접근 권한)
😂 ubuntu에 설치된 MariaDB 삭제하기 ----------------------------------
1. MariaDB 서비스 중지 : MariaDB 서비스가 실행 중이라면 먼저 중지.
>sudo systemctl stop mariadb
MariaDB 서비스를 비활성화하여 재부팅 시 자동으로 시작되지 않도록 설정할 수도 있다.
>sudo systemctl disable mariadb
2. MariaDB 패키지 삭제 : 관련 패키지를 제거.
>sudo apt-get remove --purge mariadb-server mariadb-client
관련된 종속 패키지도 삭제하려면 다음 명령을 실행.
>sudo apt-get autoremove --purge
--------------------------------------------------------------------------------------------
실습 예1) 윈도우에서 spring project를 실행 (DB는 Unbuntu에 설치) ==> 브라우저로 URL 요청해 결과 확인
참고 : Gradle 환경의 프로젝트를 빌드한 후 생성된 .jar로 배포하기(Window)
https://velog.io/@sians0209/Spring-.jar%EB%A1%9C-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0
| 1. 콘솔로 이동 : 명령 프롬프트(cmd)로 이동 > cd c:\work\spring-sou\testproject 2. 빌드하기 > gradlew build 3. 빌드가 되지 않을 때 빌드 폴더를 삭제하고 다시 빌드하는 명령어 > gradlew clean > gradlew clean build 4. jar 파일 생성 확인 > cd build/libs > dir 5. 웹 프로젝트 배포 : 프로젝트명-0.0.1-SNAPSHOT.jar 파일만 복사해서 서버에 넣고, jar 파일을 실행 > java -jar testproject-0.0.1-SNAPSHOT.jar |
실습 예2) spring project를 jar로 만들어 Unbuntu에 배포해 실행 ==> 운영체제 두 곳에서 브라우저로 URL 요청해 결과 확인.
윈도우에서 우분투로 배포 파일(***.jar) 전송은 FTP 툴을 사용 - Filezilla 등
*** centOS에 설치 *************************************
__ mariadb-server 설치 : root에서 작업 __
[root@localhost ~]# yum install -y mariadb mariadb-server
[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# systemctl enable mariadb.service
[root@localhost ~]# mysql -u root
-- root 사용자에게 암호 부여 --
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user set password=password("123") where user='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> exit;
[root@localhost ~]# systemctl restart mariadb.service
[root@localhost ~]# logout
[hadoop@localhost ~]$ mysql -u root -h 127.0.0.1 -p
MariaDB [(none)]> create database abcdb;
MariaDB [(none)]> use abcdb;
MariaDB [abcdb]> create table sangdata(
-> code int primary key,
-> sang varchar(20),
-> su int(9),
-> dan int(9));
MariaDB [abcdb]> insert into sangdata values(1,'마우스',5,5000);
---한글 깨짐 방지책---
my.cnf 파일에 아래 내용을 추가해 준다.
[root@localhost ~]# vi /etc/my.cnf
#
!includedir /etc/my.cnf.d
[client]
default-character-set=utf8
[mysqld]
init_connect=SET collation_connection=utf8_general_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_general_ci
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8
--- my.cnf 파일의 추가작업을 빠져나와서 mariadb.service 재시작 ---
[root@localhost ~]# systemctl restart mariadb.service
-- 한글설정 전의 database는 수정된 한글 설정이 적용되지 않으므로 database를 새로 작성한다.
MariaDB [kbsdb]> show variables like 'c%'; 기본 charset 이 latin에서 utf8로 변경된 걸 볼 수 있다.
MariaDB [kbsdb]> create table sangdata(code int primary key, sang varchar(20), su int(9), dan int(9));
MariaDB [kbsdb]> insert into sangdata values(1,'마우스',15,15000);
성공!!!
또는 따로이 한글설정 없이 nvarchar를 이용해도 된다.
create table sangdata(code int primary key, sang nvarchar(20), su int(9), dan int(9));
MySQL 설치 --버전은 변경될 수 있다-------------
[root@localhost ~]# wget http://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-2.1.3.tar.gz
[root@localhost ~]# tar xvzf mysql-connector-python-2.1.3.tar.gz
[root@localhost ~]# cd mysql-connector-python-2.1.3/
[root@localhost mysql-connector-python-2.1.3]# python3.6 setup.py install
[root@localhost mysql-connector-python-2.1.3]# ls /usr/local/lib/python3.6/site-packages/
[root@localhost mysql-connector-python-2.1.3]# cd
첫댓글 mysql -h 리눅스아이피주소 -u root -p << 맥용
./gradlew build <<<<<맥용