오늘 제가 앞으로 설치하려는 프로그램 때문에 데이터베이스가 필요해서 우분투 리눅스에 데이터베이스를 설치해보겠습니다.
우선 당연히 우분투 리눅스에 접속 합니다. ^^
잘 접속 하셨다고 생각하고 깔아 보도록 하겠습니다. ^^
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.
//$db_query="SELECT k.kwon_year, k.SET_POSITION, k.reg_id, k.status, k.set_position_type FROM mono.mmp1_".$kwon_tbl." k, mono.mlp1_subscript s WHERE k.reg_id=s.maccno AND k.control_id='$control_id'";
$db_query="select * from dbname.tablename"; // 원하는 쿼리
select level, lpad('>', level*2) || group_nm, group_exp
from tpc_dept start with dept_cd in (select dept_cd from tpc_dept where pre_dept_cd = '00000') connect by prior dept_cd = pre_dept_cd
오라클에서 지원하는 트리구조 함수 START WITH ~ CONNECT BY PRIOR ~
형한테 할당된 db가 parkbae 라고 치궁 user id 가 parkbae 라고 생각했습니다.
저렇게 하면 패스워드를 묻습니다.
패스워드만 답하면
저걸 실행 시킨 디렉토리에 park1.sql 이라는 파일이 남습니다.
그리고 이제 park2 라는 DB로 임포트를 해줘야하는데요.
park2와 park1이 동일한 테이블 구조를 가지고 있다면 쉽구요
그렇지 않다면
조금은 SQL에 수정을 가해 주어야합니다.
우선 저는 동일한 테이블 구조를 가지고 있다고 생각하겠습니다.
여러가지 방법이 있는데요 우선 park2가 새로운 DB 일 경우에는 쉽습니다.
그대로 임포트만 하면 됩니다.
하지만 그렇지 않을 경우에는요. 다음과 같이 해 주어야합니다.
SQL문을 살펴보면요
InSERT 라는 부분이 있을 겁니다.
그 부분에 보시면 Key 값으로 쓰이는 부분이 있습니다.
보통은 no 등이 쓰이는데요
그 분을 다 지워 줘야합니다.
'1'
'2'
'3'
이부분을 다지 우세요 ^^
숫자만요
그러니깐
이거하실때는 ^^ park1.sql 파일을 열고 하셔야되겠죠 ^^
''
그러니깐 이렇게 되어 있어야합니다.
Insert into test values('',1,now();,'127.0.0.1','bbuwoo','0000',
'admin@oops.org','http://www.oops.org','이글을 보신후 꼭 삭제하십시오.',
'게시판을 처음 사용하실때 유의하실 점입니다. 일단 기본적으로 Admin mode의 password는 0000으로 맞추어져 있습니다. 게시판 상단의 admin 을 클릭하여 이것들을 변경하여 주십시오.
',0,0,0,0,0,'','','');
위와 같이 되어 있어야합니다.
그리고는요.
다음 명령을 실행 하시면 됩니다.
참 실수 했네요 ^^
park1.sql을 열었을때요
Create table 라는 부분 부터 );
이부분을 삭제해 줘야합니다.
예를들어 이부분이요 ^^
CREATE TABLE test (
no int(8) DEFAULT '0' NOT NULL auto_increment,
num int(8) DEFAULT '0' NOT NULL,
date int(11) DEFAULT '0' NOT NULL,
host tinytext,
name tinytext,
passwd varchar(13),
email tinytext,
url tinytext,
title tinytext,
text mediumtext,
refer int(8) DEFAULT '0' NOT NULL,
reyn int(1) DEFAULT '0' NOT NULL,
reno int(8) DEFAULT '0' NOT NULL,
rede int(8) DEFAULT '0' NOT NULL,
reto int(8) DEFAULT '0' NOT NULL,
bofile varchar(100),
bcfile varchar(100),
bfsize int(4),
PRIMARY KEY (no),
KEY num (num),
KEY date (date),
KEY reno (reno)
);