1. 설치하면서 root 비밀번호를 물어보면 적당한 것으로 입력한다.

$ sudo apt-get install mysql-client-8.0 mysql-server-8.0 libmysqlclient-dev
$ sudo /etc/init.d/mysql start

 

2. 외부접속 허용 설정

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0

 

3. MySQL root 계정 비밀번호 변경 (mysql 을 설치하면 root 계정의 비밀번호가 설정되어 있지 않으므로 반드시 설정하여야 한다.)

$ mysqladmin -u root password 새로운비밀번호 -p

 

4. root 계정 외부에서 접속 설정 (필요한 경우에만 설정)

$ sudo mysql -u root
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root의 비밀번호';
FLUSH privileges;

 

5. Character set 을 UTF-8로 DB를 생성하고, 사용자 계정을 생성하는 방법은 다음과 같다.

DB Name   : xyz
User Name : xyz
Password  : xyz123
$ sudo mysql -u root
Welcome TO the MySQL monitor.  Commands END WITH ; OR \g.
Your MySQL connection id IS 13
Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu)
 
Copyright (c) 2000, 2021, 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> CREATE DATABASE xyz DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 ROW affected, 2 warnings (0.06 sec)
 
mysql> CREATE USER 'xyz'@'%' IDENTIFIED BY 'xyz123';
Query OK, 0 ROWS affected (0.03 sec)
 
mysql> GRANT ALL PRIVILEGES ON xyz.* TO 'xyz'@'%' WITH GRANT OPTION;
Query OK, 0 ROWS affected (0.00 sec)
 
mysql> CREATE USER 'xyz'@'localhost' IDENTIFIED BY 'xyz123';
Query OK, 0 ROWS affected (0.01 sec)
 
mysql> GRANT ALL PRIVILEGES ON xyz.* TO 'xyz'@'localhost' WITH GRANT OPTION;
Query OK, 0 ROWS affected (0.01 sec)
 
mysql> FLUSH privileges;
Query OK, 0 ROWS affected (0.00 sec)
 
mysql> exit

 

6. 테이블 생성 및 기초 데이터 입력

$ mysql -u xyz -pxyz123 xyz
mysql: [Warning] USING a password ON the command line interface can be insecure.
Welcome TO the MySQL monitor.  Commands END WITH ; OR \g.
Your MySQL connection id IS 14
Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu)
 
Copyright (c) 2000, 2021, 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> CREATE TABLE `users` (
    ->     `sno`      INT NOT NULL AUTO_INCREMENT,
    ->     `username` VARCHAR(80) NOT NULL,
    ->     `password` VARCHAR(60) NOT NULL,
    ->     `email` VARCHAR(254) NOT NULL,
    ->     PRIMARY KEY (`sno`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 ROWS affected, 1 warning (0.02 sec)
 
mysql>
mysql> CREATE TABLE `admins` (
    ->     `sno`      INT NOT NULL AUTO_INCREMENT,
    ->     `userid`   VARCHAR(255) NOT NULL,
    ->     `password` VARCHAR(255) NOT NULL,
    ->     `nick`     VARCHAR(255),
    ->     PRIMARY KEY (`sno`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 ROWS affected, 1 warning (0.02 sec)
 
mysql> SHOW TABLES;
+---------------+
| Tables_in_xyz |
+---------------+
| admins        |
| users         |
+---------------+
2 ROWS IN SET (0.00 sec)
 
mysql> INSERT INTO admins(userid, password, nick) VALUES('testid1', 'passwd1', 'nick1');
Query OK, 1 ROW affected (0.01 sec)
 
mysql> INSERT INTO admins(userid, password, nick) VALUES('testid2', 'passwd2', 'nick2');
Query OK, 1 ROW affected (0.00 sec)
 
mysql> INSERT INTO admins(userid, password, nick) VALUES('testid3', 'passwd3', 'nick3');
Query OK, 1 ROW affected (0.00 sec)
 
mysql> INSERT INTO admins(userid, password, nick) VALUES('testid4', 'passwd4', 'nick4');
Query OK, 1 ROW affected (0.00 sec)
 
mysql> INSERT INTO admins(userid, password, nick) VALUES('testid5', 'passwd5', 'nick5');
Query OK, 1 ROW affected (0.01 sec)
 
mysql> SELECT * FROM admins;
+-----+---------+----------+-------+
| sno | userid  | password | nick  |
+-----+---------+----------+-------+
|   1 | testid1 | passwd1  | nick1 |
|   2 | testid2 | passwd2  | nick2 |
|   3 | testid3 | passwd3  | nick3 |
|   4 | testid4 | passwd4  | nick4 |
|   5 | testid5 | passwd5  | nick5 |
+-----+---------+----------+-------+
5 ROWS IN SET (0.00 sec)
 
mysql> exit

  • 설치
    # yum install postgresql84 postgresql84-devel postgresql84-libs postgresql84-contrib postgresql84-server
    
  • DB 초기화
    # service postgresql initdb
    
    /var/lib/pgsql/data 에 초기화된 파일들이 생성된다.
  • 설정파일 위치 : /var/lib/pgsql/data
  • 시스템 부팅시 자동으로 실행되게 하려면, ntsysv 에서 postgresql 을 체크해주어야 한다.
  • 사용자, DB 생성
    # su - postgres
    # psql
    postgres=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
    postgres=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
    
  • 계정으로 로그인할 수 있도록 연결설정
    # su -
    # cd /var/lib/pgsql/data/
    # vi pg_hba.conf
    모두 주석으로 막고 아래만 남김
    host    all         all         0.0.0.0           0.0.0.0           password
    local   all         postgres                                        trust
    local   all         all                                             password
    
    # vi postgresql.conf
    listen_addresses = '*'
    
    # /etc/init.d/postgresql restart
    # psql -d 디비이름 -U 아이디 -W
    

보통은 오라클도 데비안 리눅스에 설치해서 사용하지만, RAC 구성을 위해서는 어쩔수 없이 CentOS를 이용해야만 한다. 아직 데비안 리눅스에서는 성공하지 못했기 때문이다.

CentOS 설치시, Memory는 1.5GB 이상, Swap은 2.2GB 이상으로 잡고, SELinux은 disabled 로 설정한다. Firewall도 실행되지 않도록 한다.

오라클 다운로드
아래 링크를 통해서 오라클을 다운로드 받는다.
Oracle Database 11g Release 2 (11.2) Software
Hosts File
/etc/hosts 파일을 아래와 같이 설정한다.
<IP-address>  <fully-qualified-machine-name>  <machine-name>
예를 들면, 아래와 같을 수 있겠다.
10.1.11.111    db1.urdomain.com    db1
커널 파라미터 설정
/etc/sysctl.conf 파일에 아래 내용을 추가하고 저장한다.
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
아래 명령어를 실행하여 현재 파라미서 설정값으로 변경한다.
/sbin/sysctl -p
/etc/security/limits.conf 파일에 아래 내용을 추가한다.
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
/etc/pam.d/login 파일에 아래 내용을 추가한다.
session    required     pam_limits.so
/etc/selinux/config 파일을 수정하여 SELinux를 Disable한다.
SELINUX=disabled
아래와 같이 해서 Firewall 을 멈추고, ntsysv 를 실행하여 iptables 에 언체크해둔다.
/etc/init.d/iptables stop 
셋업
아래 패키지를 설치한다. (From Enterprise Linux 5 DVD)
# cd /media/cdrom/Server
# rpm -Uvh binutils-2.*
# rpm -Uvh compat-libstdc++-33*
# rpm -Uvh elfutils-libelf*
# rpm -Uvh gcc-4.*
# rpm -Uvh gcc-c++-4.*
# rpm -Uvh glibc-2.*
# rpm -Uvh glibc-common-2.*
# rpm -Uvh glibc-devel-2.*
# rpm -Uvh glibc-headers-2.*
# rpm -Uvh ksh*
# rpm -Uvh libaio-0.*
# rpm -Uvh libaio-devel-0.*
# rpm -Uvh libgomp-4.*
# rpm -Uvh libgcc-4.*
# rpm -Uvh libstdc++-4.*
# rpm -Uvh libstdc++-devel-4.*
# rpm -Uvh make-3.*
# rpm -Uvh sysstat-7.*
# rpm -Uvh unixODBC-2.*
# rpm -Uvh unixODBC-devel-2.*
# rpm -Uvh pdksh*
# cd /
# eject
또는, yum 을 이용해서 자동으로 다운로드 받아서 설치한다.
# yum install binutils-2* compat-libstdc++-33* elfutils-libelf* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh* libaio-0.* libaio-devel-0.* libgomp-4.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-7.* unixODBC-2.* unixODBC-devel-2.* pdksh*
새로운 그룹과 사용자를 생성한다.
# groupadd oinstall
# groupadd dba
# groupadd oper
# groupadd asmadmin

# useradd -g oinstall -G dba,oper,asmadmin oracle
# passwd oracle
오라클을 설치할 디렉토리를 생성한다.
# mkdir -p /u01/app/oracle/product/11.2.0/db_1
# chown -R oracle:oinstall /u01
# chmod -R 775 /u01
oracle 사용자로 로그인하여 .bash_profile 파일에 아래 내용을 추가한다.
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=db1.localdomain; export ORACLE_HOSTNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=DB11G; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi
파일 풀기
oracle 사용자로 로그인하여 unzip 으로 파일을 푼다.
# unzip linux_11gR2_database_1of2.zip
# unzip linux_11gR2_database_2of2.zip
파일을 풀면 database 라는 디렉토리가 생성된다. 이 안에 설치 파일들이 존재한다.
설치
Cygwin/X 등의 X서버 환경에서 아래와 같이 oracle 사용자로 로그인한다.
# ssh -Y oracle@오라클설치서버
database 디렉토리에서 아래 명령어를 입력하여 Oracle Universal Installer (OUI)를 실행한다.
$ ./runInstaller
설치순서는 아래와 같다.
  1. Configure Security Updates
  2. Select Install Option
  3. System Class
  4. Node Selection
  5. Select Install Type
  6. Typical Install Configuration
  7. Create Inventory
  8. Perform Prerequisite Checks
  9. Summary
  10. Install Product
  11. Database Configuration Assistant
  12. Database Configuration Assistant 2
  13. Execute Configuration Scripts
  14. Finish
설치후 작업
/etc/oratab 파일을 수정한다.
DB11G:/u01/app/oracle/product/11.2.0/db_1:Y
이로써 설치작업이 완료되었다. https://서버주소:1158/em/ 으로 접속해보자. 로그인 화면이 나오면 정상.

저는 데비안 리눅스를 무척 좋아하여 왠만한 개발과 운영을 데비안 리눅스로 하고 있습니다. DBMS는 될 수 있으면 PostgreSQL을 사용하려고 합니다. MySQL처럼 쉽게 설치할 수 있고 간단하게 운영할 수 있기 때문이지요. 그리고 라이센스가 MySQL에 비해서도 자유로운 장점도 있습니다. 최근에는 다우기술에서도 상용서비스 지원을 하고 있습니다. 간단하게 설치/DB,사용자생성/백업,복구 등에 대해 정리해보겠습니다.


  1. 데비안 리눅스에서 설치하기
  2. # apt-get install postgresql-8.4 postgresql-server-dev-8.4
    
  3. 사용자, DB 생성
  4. # su - postgres
    # psql
    template1=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
    template1=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
    
  5. 계정으로 로그인할 수 있도록 연결설정
  6. # su -
    # cd /etc/postgresql/8.4/main/
    # vi pg_hba.conf
    모두 주석으로 막고 아래만 남김
    host    all         all         0.0.0.0           0.0.0.0           password
    local   all         postgres                                        trust
    local   all         all                                             password
    
    # vi postgresql.conf
    listen_addresses = '*'
    
    # /etc/init.d/postgresql restart
    # psql -d 디비이름 -U 아이디 -W
    
  7. DB List 보기
  8. # psql -U postgres -l
              List of databases
        Name     |    Owner    | Encoding
    -------------+-------------+----------
     eecit       | eecit       | UNICODE
     openwatcher | openwatcher | UNICODE
     template0   | postgres    | UNICODE
     template1   | postgres    | UNICODE
    (4 rows)
    
  9. SQL Dump
  10. # export DATE=`date +%Y-%m-%d`
    # /usr/bin/pg_dump -U 아이디 -d 디비이름 > /opt/db_backup/db_backup_$DATE.bak
    
  11. Restoring the dump
  12. $ psql -U 아이디 -d 디비이름 < infile
    

+ Recent posts