sudo apt install ./dbeaver-ce_latest_amd64.deb
[sudo] password for talkit:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'dbeaver-ce' instead of './dbeaver-ce_latest_amd64.deb'
The following NEW packages will be installed:
dbeaver-ce
0 upgraded, 1 newly installed, 0 to remove and 47 not upgraded.
Need to get 0 B/126 MB of archives.
After this operation, 158 MB of additional disk space will be used.
Get:1 /home/talkit/dbeaver-ce_latest_amd64.deb dbeaver-ce amd64 22.3.5 [126 MB]
Selecting previously unselected package dbeaver-ce.
(Reading database ... 157064 files and directories currently installed.)
Preparing to unpack .../dbeaver-ce_latest_amd64.deb ...
Unpacking dbeaver-ce (22.3.5) ...
Setting up dbeaver-ce (22.3.5) ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
설치도 잘 되었습니다.
확인해 보겠습니다.
dbeaver-ce 가 설치된 프로그램입니다.
한번 클릭 해보고 오늘은 마치겠습니다.
윈도우즈 처럼 예쁘게 잘 뜨네요 ^^
처음에 들어가면 조금 다르게 데이터 베이스를 만들까요 부터 몇가지를 물어 보는데 저는 취소 했습니다.
talkit@ubuntu:~$ mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
talkit@ubuntu:~$ mysql
ERROR 1045 (28000): Access denied for user 'talkit'@'localhost' (using password: NO)
Command not found로 나오지 않고 옵션을 보여 주거나 오류를 보여 주면 ^^
제대로 설치가 되어 있는 것입니다.
mysql 은 데이터베이스를 확인하기 위해서 사용합니다.
mysql -u root -p -e "show databases;"
mysql -u root -p -e "show databases;"
Enter password:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mattermost |
| mysql |
| performance_schema |
| sys |
+--------------------+
오늘 제가 앞으로 설치하려는 프로그램 때문에 데이터베이스가 필요해서 우분투 리눅스에 데이터베이스를 설치해보겠습니다.
우선 당연히 우분투 리눅스에 접속 합니다. ^^
잘 접속 하셨다고 생각하고 깔아 보도록 하겠습니다. ^^
sudo apt update
우선 최신 업데이트가 있는지 확인 합니다.
보통은 비밀번호를 한번 넣어 줘야 하지만 ^^
저희는 비밀번호를 넣지 않아도 되네요 ^^
sudo apt install mysql-server
업데이트가 끝나면 위 명령어를 입력하시면 됩니다.
sudo apt install mysql-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite23 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8
mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0
Suggested packages:
libdata-dump-perl libipc-sharedcache-perl libbusiness-isbn-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite23 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8
mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0
0 upgraded, 28 newly installed, 0 to remove and 20 not upgraded.
Need to get 29.4 MB of archives.
After this operation, 242 MB of additional disk space will be used.
Do you want to continue? [Y/n]
그러면 계속 할꺼냐고 묻는데 ^^ 다연히 Y를 입력 합니다.
정말 간단하네요 ^^
쭉 설치가 이루어지고, 중간에 커널관련된 메시지가 떴는데 캡쳐를 못해서 ^^ OK 두번 눌러 주시면 됩니다.
mysql client 까지 잘 설치 되었습니다.
sudo mysql_secure_installation
보안 설정과 root 비밀번호 설정을 위해서 위 프로그램을 실행해 줍니다.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
보안 때문에 비밀번호를 넣는게 좋다 넣겠느냐? 당연히 Y를 누르셔야 합니다. ^^
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
정책적으로 쉬운 비밀번호를 쓸꺼냐 어려운 비밀번호를 쓸꺼냐? 물으면 일단 어려운 비밀번호를 선택해야겠지요 ^^ 하지만, 비밀번호 만들기 규칙이 좀 쉬워야 하니까 다른 방법으로 보안을 신경 써줘야 해서 여기서는 MEDIUM 중간정도를 선택 하겠습니다. ^^
그래서 여기는 1을 넣습니다.
Please set the password for root here.
New password:
Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :
그랬더니 니가 제공한 비밀번호는 50점 정도 되는데 그래도 쓸래 라고 합니다. 저는 Y를 눌러야지요 ^^
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
New password:
저 처럼 위와 같이 오류가 나면 해당 쉘을 종료 하십시오 ^^
그리고 다른 방법으로 비밀번호를 변경 합니다. ^^
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '원하는비밀번호';
여기서 원하는 비밀번호는 아까 만든신 비밀번호 규칙을 잘 따르셔야 합니다. ^^
sudo mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
자 이제 제가 원하는 대로 mysql 에 접속이 되네요 간단하게 한번 몇개 명령어만 더 내리고 오늘은 여기까지 글을 마무리 하겠습니다. ^^
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
show databases; 명령어는 mysql에서 사용할 수 있는 데이터베이스 명을 출력해 줍니다.
use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
SQL> drop index hr.JHIST_EMP_ID_ST_DATE_PK;
drop index hr.JHIST_EMP_ID_ST_DATE_PK
*
ERROR at line 1:
ORA-02429: cannot drop index used for enforcement of unique/primary key
2. 오류와 관련 된 테이블 확인 하기
SQL> column constraint_name format a30;
SQL> select constraint_name from all_constraints where index_owner = 'HR' and index_name = 'JHIST_EMP_ID_ST_DATE_PK';
CONSTRAINT_NAME
------------------------------
JHIST_EMP_ID_ST_DATE_PK
3. Drop Constraint
인덱스를 지우기 전에 Constraint를 먼저 수정 해야 합니다.
SQL> alter table hr.job_history drop constraint JHIST_EMP_ID_ST_DATE_PK;
Table altered.
4. Drop index
이제 인데스를 지웁니다.
SQL> drop index hr.JHIST_EMP_ID_ST_DATE_PK;
Index dropped.
긴 답변 : 만약 당신이 테이블의 컬럼을 숫자타입의 프라이머리키가 되도록 정의를 한다면, 테이블의 컬럼에 NULL을 입력할때 마다, NULL이 자동으로 그 이 테이블의 그 클럽을 통틀어서 가장 큰 값보다 큰 하나의 숫자나 만약에 테이블이 비어 있다면 1로 변환될 것이다.
(만약에 가장 크게 가능한 숫자타입의 키, 9223372036854775807, 그 후에는 사용되지 않는 키 벨류가 랜덤으로 선택 될 것이다.)
예를 들어, 당신이 다음과 같은 테이블을 정의한다면 :
CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
);
이 테이블에서 이 문장
INSERT INTO t1 VALUES(NULL,123);
은 다음 문장과 같은 의미를 지닌다.
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
이것은 가장 최근의 입력 동작을 위한 숫자타입 키를 반환하는 sqlite3_last_insert_rowid() 함수 이다.
숫자타입 키는 가장큰키를 만났을때 테이블에서 단지 이전에 입력한 값이라는 것에 주의 하라.
새로운 키는 현재의 테이블의 키를 통틀어서 유일할 것이다. 그러나 그것은 테이블에서 이전에 지워진 키값이다.
키를 생성하는 것은 테이블이 살아 있는 동안 유일하다. AUTOINCREMENT 키워드를 숫자타입 프라이머리 키 정의에 추가할 경우에
키 선택이 있은 후에는 테이블 안에 존재하는 가장 큰 키보다 더 클 것이다.
만약 가장 큰 키 값이 테이블에서 이전에 존재하는 값이라면 입력작업은 SQLITE_FULL 에러 코드와 함께 실패할 것이다.
SQLite는 자체 포함되고, 서버가 필요 없고, 설정이 필요 없고, 트랜젝션을 지원하는 SQL 데이터베이스 엔진입니다.
SQLite 코드는 공공재 이다. 그러므로 상업적으로던 개인적으로던 자유롭게 이용할 수 있다.
SQLite는 여러 high-profile 푸로젝트를 포함해서 우리가 셀 수 있는 것 보다 더 많은 프로그램에서 계속 발견된다.
SQLite는 엠베디드 SQL 데이터베이스 엔진이다.
거의 모든 다른 SQL 데이터베이스들 과 달리, SQLite는 독립적인 서버 프로세서를 가지고 있지 않다.
SQLite는 일상적인 디스크파일에 직접 읽고 쓴다.
멀티플 테이블과 인덱스들과 트리거들과 뷰들을 포함한 완벽한 SQL 데이터베이스는 하나의 디스크 파일이 포함하고 있다.
데이터베이스 파일 포맷은 크로스 플랫폼을 지원한다. - 당신이 32비트나 64비트 시스템간이나 빅인디언과 리틀인디언 아키텍쳐 사이에도 데이터베이스로 자유롭게 복사가 가능하다.
이 특징은 SQLite를 어플리케이션 파일 포맷으로써 좋은 선택으로 만들어 준다.
SQLite의 생각는 Oracle을 바꾸는 것이 아니고 fopen()을 바꾸는 것이다.
SQLite는 컴팩트한 라이버러리이다.
모든 특성들이 가능하도록
설정하면 라이버러리 크기는 250Kib 이하로 줄일 수 있다. 컴파일러의 옵티마이제이션 설정에 의존적이지만,( 공격적인 함수
inlining 과 loop unrolling 같은 어떤 컴파일러 옵티마이제이션은 목적코드가 훨씬 더 크게 만들 수도 있다.)
만약 선택적으로 특성들이 생략된다면 SQlite 라이버러리의 크기는 180Kib 이하로 줄일 수 있다.
SQLite
는 물론 최소의 스택공간(16Kib)에서 사용하도록 만들 수 있다. 그리고 매우 작은 힙(Heap)(100Kib)을 사용한다.
핸드폰이나, PDA, MP3 플레이어 같은 작은 메모리 가젯에 적합한 데이터베이스 엔진을 선택하도록 해준다.
그것은 메모리와 속도 사이의 교환 조건이다.
SQLite는 일반적으로 더 많은 메모리를 주면 매우 빠르게 동작한다.
그럼에도 불구하고, 작은 메모리 환경에서도 보통 꽤 좋은 성능을 나타낸다.
SQLite는 매우 신뢰할만 하다고 평판이 나 있다.
소스코드의 거의 3/4 정도가 테스팅과 검증에 순수하게 노력을 기울인다.
자동 테스트 슈트는 100만번의 개별적인 SQL 문장과 99퍼센트 이상의 문장의 보장범위를 보장 하는 등 수십만번의 테스를 실행 했다.
SQLite는 메모리 어로케이션 페일류어와 디스크 입출력(I/O) 오류에 대해 깨끗하게 응답했다.
트랜젝션들은 시스템 고장이나 전원이상에도 ACID를 유지했다.
이 모든 것을 시스템 오류를 시뮬레이트 해보는 것 같은 특별한 테스트 작업을 이용한 자동 테스트가 검증했다.
물론 이 모든 테스트에도 아직 버그가 있다.
그러나 약간의 비슷한 제품들(특히 상용 경쟁자들(제품들))과 달리 SQLite는 공개되어있고 모든 버그에 관해 정직하고 치명정인 버그리스트와 버그 리포트의 지속적인 연표 형식의 버그 리스트와 코드 변화를 제공한다..
SQLite의 코드 기반은 SQLite에 적적으로 매달리는 개발자들의 세계적인 팀이 지원한다.
개발자들은 SQLite의 가용성을 확장하고 그것의 실뢰성과 제공된 인터페이스 스펙과 SQL 문법 그리고 데이터베이스 파일 포맷에 대해 과거버젼 호환성을 유지하는 동안의 퍼포먼스를 보장하고 계속한다.
이 소스 코드는 원하는 누구에게나 전적으로 사용이 자유롭다. 그러나 전문적인 지원 서비스도 물론 가능하다.
우리 개발자들은 당신이 SQLite의 유용성을 발견하기를 희망한다. 그리고, 우리는 빠라고 신뢰성이 간단하게 사용할 수 있는 좋고 예쁜 제품을 만들기위해서 그것을 당신이 잘 사용하기를 바란다.
당신이 다른 사람들에게 관대하듯이 당신을 위한 관대함 찾아라.
그리고 단지 당신이 SQLite를 자유롭게 얻었듯이 그래서 역시 앞으로 빚을 갚듯이 자유롭게 제공해라.
ANSI-C로 짜여졌다. TCL bindings를 포함다. 다양한 언어에 대한 바인딩을 제공한다. 가능한 독립적으로
99%이상 테스트가 진행된 주석이 잘 처리된 소스코드
당신은 하나의 ANSI-C 소스코드 파일처럼 가능한 쉽게 다른 프로젝트에서 적용 할 수 있다.
자체포함 : 외부 의존성이 전혀 없다.
크로스 플랫폼 지원 : 특히, 리눅스(유닉스)MacOS X, OS/2 Win32 그리고 WinCE 를 지원한다. 다른 시스템으로 포팅 하기 쉽다.
소스는 공공재이다. 어떤 목적으로던 사용가능하다.
독립적인 커맨 라인 인터페이스(CLI) 클라이언트를 SQLite 데이터베이스 관리에 이용할 수 있다.
SQLite를 사용할 것을 제안함
프로그램의 파일포맷. 당신의 어플리케이션이 XML이나 다른 프로퍼티 파일 포맷을 디스카 파일에 fopen()을 이용하는 것 대신에 SQLite 데이터베이스를 이용해 보라. 당신은 데이터를 더욱 쉽게 접근 가능하도록 크로스플랫폼을 지원하도록 하기위에서 작성하고 파서에 대한 문제해결을 해야하는 점을 피할 수 있을 것이다. 당신의 업데이트는 트래젝션을 지원할 것이다.
가젯을 위한 데이터베이스
SQLite는 핸드폰, PDA, MP3 플레이어, 그리고, 다른 전자 가젯을 위한 데이터 베이스엔진으로서 좋은 선택이다.
SQLite는 작은 코드 저장 공간을 차지한다. 메모리 디스크공간과 디스크 밴드위드스 이용을 효율적으로 한다, 높은 신뢰성을 보여 준다 그리고, 데이터베이스 관리자로 부터 유지보수를 필요로 하지 않는다.
웹사이트 데이터베이스.
왜냐면 SQLite는 설정이 필요없고 일반적인 디스크파일에 정보를 저장하기 때문이다. SQLite는 작거나 중간정도 규모의 웹사이트 데이터베이스로서 좋은 선택이다.
엔터프라이즈 RDBMS를 위한 대역
SQLite는 종종 데몬스트레이션 목적 또는 테스트 목적으로 엔터프라이즈 RDBMS를 위한 대안으로 사용된다.
SQLite는 빠르고 셋업이 필요 없다. 테스트에 대한 수고를 들어 준고, 활기찬 데모를 만들어주고, 실행하는 것이 쉽습니다.