A ํธ์คํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ ๋ B ํธ์คํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค์น๋์ด์ ธ ์์ผ๋ฉด ์๊ฒฉ์ผ๋ก ์ฐ๊ฒฐํ ์ ์๋ค.
์ด๋ฐ ๋ถ๋ถ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Access ๊ท์ ์ด๋ค.
ํจ์ค์๋ ๋ณ๊ฒฝ
์ฝ์์์๋ mysqladmin -u root password 'rootoor'; ํด์ฃผ๊ณ
mysql> update mysql.user (mysql ๋ฐ์ดํฐ๋ฒ ์ด์ค.user ํ
์ด๋ธ)
set authentication_string=PASSWORD('rootoor')
where user='root'; ํด์ฃผ๋ฉด ๋๋ค.
์ฌ์ฉ์ ์์ฑ๊ณผ ๊ถํ ์ฃผ๊ธฐ
mysql> create user 'paul'@'localhost' identified by 'paul';
mysql> grant all privileges(OR delete, select, .... ๊ถํ) on *.*(๋ฐ์ดํฐ๋ฒ ์ด์ค_๋ช
.ํ
์ด๋ธ_๋ช
) to 'paul'@'localhost'
identified by 'paul'; <=๋ก์ปฌ ์ ์
grant all privileges on *.* to 'paul'@'%' identified by 'paul'; <=์๊ฒฉ์ ์
์ฌ์ฉ์ ์ญ์
mysql> drop user 'paul'@'localhost'; ์ญ์
mysql> delete from mysql.user where host='192.168.100.100' and user='paul'; <=192.168.100.100 ํธ์คํธ์ paul
delete from mysql.user where host='192.168.100.%' and user='paul'; <=192.168.100.0 ๋คํธ์ํฌ ์์ paul
systemctl start mysql
systemctl enable mysql.service
ufw allow 3306/tcp
netstat -nltp |grep 3306
mysqladmin -u root password 'rootoor123'์ผ๋ก ์ง์ ํ๋๋ mysql -u root -p์์ rootoor123์ ์ ๋ ฅํด์ ๋ค์ด๊ฐ๋ค.
select * from mysql.user;
ํจ์ค์๋ ๋ณ๊ฒฝ์ ํด๋ณด๊ฒ ๋ค.
์ด๋ฏธ password policy๋ฅผ low๋ก ๋ณ๊ฒฝํ๊ณ ์บก์ณํ๋ค.
(set global validate_password_policy=LOW;)
์ ์ ์์ฑ
=>์ฌ๊ธฐ์ 'ํจ์ค์๋๊ฐ ์ ์ฑ
๊ณผ ์ ๋ง๋๋ค'๊ณ ์ค๋ฅ๋ฅผ ๋ณด์ด๋ฉด(4์๋ฆฌ ํจ์ค์๋๋ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค๋ฉด)
a) show variables like 'validata_password%'; ํด์ ์ค์ ์ ๋ณด๊ณ
b) set global validate_password_policy=LOW;
c) set global validate_password_length=4; ํด์ฃผ๊ณ
d) flush privileges; ํด์ ๊ถํ์ ๊ฐฑ์ ํ ๋ค์,
e) exit; ํ๊ณ ,
f) ๋ค์ ์ฝ์์์ mysql –u root –prootoor ํด์ root ์ฌ์ฉ์๋ก ๋ค์ด๊ฐ ๋ณธ๋ค.
show databases; ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์ ๋ณด๊ณ
create database ubuntu_db; ํด์ ubuntu_db๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค๊ณ
use ubuntu_db; ํด์ ubuntu_db๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๊ณ
show tables; ํด์ ์ด ubuntu_db ์์ ํ
์ด๋ธ์ด ์๋์ง ๋ณด๊ณ
create table ubuntu_tbl ( <= ubuntu_tbl์ด๋ผ๋ ํ
์ด๋ธ_๋ช
์ง์
id int not null auto_increment, <= id ํญ๋ชฉ(์ด_๋ช
), int(๋ฐ์ดํฐ_ํ์
), not null(์ ์ฝ์กฐ๊ฑด), ์๋์ฆ๊ฐ
first_name varchar(20), <= f_name, varchar(20)์ ๊ฐ๋ณ ๋ฌธ์์ด์ด๊ณ 20๋นํธ ํฌ๊ธฐ
last_name varchar(20) not null,
city varchar(20),
phone varchar(15),
primary key (id) <= ์ด ํ
์ด๋ธ์์ '์ ์ผํ๊ณ ๊ฐ์ด ์๋' ์ฃผํค๊ฐ id์ด๋ค.
); ํด์ ubuntu_tbl์ด๋ผ๋ ํ
์ด๋ธ์ ๋ง๋ ๋ค.
desc ubuntu_tbl; ํด์ ํ
์ด๋ธ์ ์์ฑ์ ๋ณธ๋ค. <= ์ด ๋ช
๋ น์ด๋ฅผ ์คํํด์ ์ด_๋ช
์ ๋ณธ๋ค.
select ์ด_๋ช
1, ์ด_๋ช
2, ... from ํ
์ด๋ธ_๋ช
where ์กฐ๊ฑด; ์ด SQL์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ด๋ฏ๋ก ์ด_๋ช
์ ๋ชจ๋ฅด๋ฉด ์ฟผ๋ฆฌ๊ฐ ๋ถ๊ฐํ๋ค.
===>๋น
๋ฐ์ดํฐ ๋ถ์ ๋ฑ์์ ๊ณ์ฐ ์ํ ์ ๋ชจ๋ x, y์ ๊ฐ์ ๋ณ์๊ฐ ๋ฐ๋ก ์ด ์ด_๋ช
์ด๋ค.
“20์ธ ์ด์์์ ์์ 500์ด์........”์ด๋ผ๋ ์กฐ๊ฑด์ด ์๋ค๋ฉด ์ด_๋ช
age๊ฐ ๋ณ์๊ฐ ๋์ด์ age >= 20์์ผ๋ก ์์์ด ๊ฐ๋ฅํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ์ ๊ธฐ๋ณธ์
๋ฌธ์, ๋
๋๋ ' ' ์์ ๋๋ค.
๋์๋ฌธ์ ๊ตฌ๋ณ์ ์๋ค.
=>DataDictionary์์ ๋ฐ์ดํฐ๋ ๋๋ฌธ์๋ก ํด์ค๋ค.
๋ฐ์ดํฐ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋ค.
select fname, CITY, .... FROM ubuntu_tbl
where id=01; ์์ผ๋ก ํด์ค ์ ์๋ค.
Paul ์ฌ์ฉ์๊ฐ ์์ ๋
~~~~~
where fname='Paul'ํด์ฃผ์ด์ผ ํ๋ค. 'paul' ํ๋ฉด ์ค๋ฅ
์ฟผ๋ฆฌ ๋ฌธ์ฅ์ด ๋๋๋ฉด ; ์ ์ฐ์ด ์ค๋ค.
์ง์ ๋ฐ์ดํฐ ์ ๋ ฅ
ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด๋ณธ๋ค.
insert into ํ
์ด๋ธ_๋ช
(ํญ๋ชฉ๋ค) values (๊ฐ๋ค); ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋๋ค.
์ฌ๊ธฐ์ ์
๋ ฅ๋๋ ๋ฐ์ดํฐ ๊ฐ์ ์๊ฐ ํญ๋ชฉ ์์ ๊ฐ์ ๋์๋ ํญ๋ชฉ๋ค์ ์๋ตํ ์ ์๋ค.
=>์๋ ํญ๋ชฉ ์๊ฐ 10๊ฐ์ผ ๋ 10๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋๋ค๋ฉด ํญ๋ชฉ์ ์๋ตํ ์ ์์ง๋ง
=>7๊ฐ์ ๋ฐ์ดํฐ๋ง ๋ฃ์ ๋์๋
โธํญ๋ชฉ์์ 7๊ฐ๋ฅผ ์ง์ ํ๊ณ 7๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฑฐ๋,
โธํญ๋ชฉ๋ฅผ ์๋ตํ๊ณ ๋๋จธ์ง 3๊ฐ๋ ' '์ด๋ NULL ๊ฐ์ผ๋ก ์ฃผ์ด์ 10๊ฐ๋ฅผ ๋ง์ถฐ์ฃผ์ด์ผ ํ๋ค.
=>id๊ฐ auto-increment์ผ ๋์๋ id๋ผ๋ ํญ๋ชฉ๋ง ์จ์ฃผ๋ฉด ์๋์ผ๋ก ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ค.
๋ฐ์ดํฐ ์์
ํ์ผ์ ํตํ ๋ฐ์ดํฐ ์
๋ ฅ
๋ฐ์ดํฐ๊ฐ ์ฐ์ฌ ์๋ ํ์ผ์ ํตํด์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํด๋ณด์.
๋ฐ์ดํฐ๊ฐ ๋ค์ด ์๋ ํ์ผ ๋ด์ ๋ฐ์ดํฐ๋ delimiter(๊ตฌ๋ถ์)๋ฅผ ์๊ฒฉํ ์ง์ผ์ ธ ์ ์ฅ๋์ด์ ธ ์์ด์ผ ํ๋ค.
๊ตฌ๋ถ์๋ , ; : Tab space ๋ฑ์ด๋ค. ์ต์ง๋ก ๋ชจ์์ ๋ฐ์ ธ์ Spacebar๋ก ์ด๋ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ๋๋ฉด ์ค์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ค์ด๊ฐ ์ ์๋ค.
๋ ์ฒซ ์ค์ ๋ฐ์ดํฐ๊ฐ ์๋ ํญ๋ชฉ_๋ช
(์ด_๋ช
)์ด ์์ผ๋ฉด new line์ด๋ผ๋ ์ง์์ด๋ก ์ฒซ ์ค์ ๋ฌด์ํ๊ณ ๋ก๋์ํฌ ์๋ ์๋ค.
a. ์ ์ฝ์์ ์ด๊ณ nano name.txt ํ๊ณ ์
๋ ฅ์ฐฝ์ด ๋จ๋ฉด
Tab ํค๋ก ์๊ฒฉํ๊ฒ ๊ตฌ๋ณํด์(Tab, ; , , , '', ...๋ฑ์ delimiter(๊ตฌ๋ถ์)๋ผ๊ณ ํ๋๋ฐ ๋ณ๋๋ก ๊ตฌ๋ถ์๋ฅผ ์ง์ ํด์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ค.
nano name.txt ํ๊ณ ํธ์ง๊ธฐ๋ฅผ ์ด๋ฉด
๋ด์ฉ์ ์
๋ ฅํ ๋ค
Ctrl+o > Enter > Ctrl+x ํด์ ์ ์ฅํ๋ค.
Tab ํค๋ก ๊ตฌ๋ถ๋ name.txt ํ์ผ๊ณผ ,๋ก ๊ตฌ๋ถ๋ name1.txt ํ์ผ์ด ์๋๋ฐ ๋ ํ์ผ์ ๊ตฌ์กฐ๋
id, f_name, l_name, city, phone์ผ๋ก 5๊ฐ์ ํญ๋ชฉ์ด ๊ฐ๊ฐ ๋ค์ด ์๋ค.
=>์ด ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ์ ํ
์ด๋ธ์ ์ ์ฅํ๋ค๋ฉด '๊ธฐ์กด์ ํ
์ด๋ธ์ ๋ณต์ฌํด์ ์๋ก์ด ํ
์ด๋ธ' ๋ ๊ฐ๋ก ๋ง๋ ๋ค ์ ์ฅํ๋ฉด ๋๋ค. ํ
์ด๋ธ ๋ณต์ฌ๋
create table name_tbl like ubuntu_tbl;๊ณผ
create table name1_tbl like ubuntu_tbl; ํด์ฃผ๋ฉด ๊ธฐ์กด์ ubuntu_tbl์ name_tbl๊ณผ name1_tbl ๋๊ฐ์ ๋น ํ
์ด๋ธ๋ก ๋ง๋ค์ด ์ค๋ค.
์ด์ด์ ํ
์ด๋ธ์ ํ์ผ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ๋์๋
a) set global local_infile=1; ํด์ฃผ๊ณ
b) load data local infile '/home/centos/name.txt' into table name_tbl
fields terminated by '\t' ## Tab ๊ตฌ๋ณ
lines terminated by '\n'; ์
c) load data local infile '/home/centos/name.txt' into table name1_tbl
fields terminated by ',' ## , ๊ตฌ๋ณ
lines terminated by '\n'; ํด์ ์ฌ๋ฆฌ๊ณ
OR DB๋ฅผ ์ง์ ํด์ ๋ก๊ทธ์จํ์ง ์์๋ค๋ฉด ๋ค์์ฒ๋ผ ํด๋ ๋๋ค.
load data local infile '/home/centos/name.txt' into table ubuntu_db.ubuntu_tbl
fields terminated by '\t' ## Tab ๊ตฌ๋ณ
lines terminated by '\n; ํด์ DB_๋ช
.Table_๋ช
์์ผ๋ก ์ง์ ํด๋ ๋๋ค.
์์์ Tab์ผ๋ก ๊ตฌ๋ถ๋ name.txt์ ,๋ก ๊ตฌ๋ถ๋ name1.txt ๋ ๊ฐ์ ํ์ผ์ด ์์ผ๋ฏ๋ก ๊ธฐ์กด์ ํ
์ด๋ธ์์ ๊ตฌ์กฐ๊ฐ ๋์ผํ ํ
์ด๋ธ์ ๋ณต์ฌํ๋ค๋ฉด
a. use centos_db; ํด์ฃผ๊ณ
b. ๊ธฐ์กด ํ
์ด๋ธ์์ ํ
์ด๋ธ์ ๋ณต์ฌํด์ค๋ ๋ช ๊ฐ์ง ๋ฐฉ์์ ์์๋ณด์.
a) ํ
์ด๋ธ ๊ตฌ์กฐ๋ง ๋ณต์ฌ
create table name_tbl LIKE centos_tbl; ์
create table name1_tbl LIKE centos_tbl; ํด์ ๋ ๊ฐ์ ๋น ํ
์ด๋ธ์ ๋ง๋ค์ด ๋๋ค.
b) ๊ธฐ์กด ํ
์ด๋ธ์์ ๋ด์ฉ๋ ๋ชจ๋ ๋ณต์ฌํด์ ์ ํ
์ด๋ธ์ ์์ฑํ๋ฉด์ ๋ฃ๋๋ค๋ฉด
create table (if not exists) name2_tbl SELECT * FROM CENTOS_TBL;
c) ๊ธฐ์กด ํ
์ด๋ธ์์ ๋ด์ฉ์ค ์ผ๋ถ๋ง ๋ณต์ฌํด์ ์ ํ
์ด๋ธ์ ๋ฃ๋๋ค๋ฉด
create table name4_tbl LIKE centos_tbl; ํด์ ๋น ํ
์ด๋ธ์ ์์ฑํ ๋ค
insert into name4_tbl (col1, col2, ..) SELECT COL1, COL2, .. FROM CENTOS_TBL; ํด์ฃผ๋ฉด ๋๋ค.
=>create table name4_tbl SELECT COL1, COL2 FROM CENTOS_TBL; ํด์ ํ ๋ฒ์ ์ฒ๋ฆฌํด๋ ๋๋ค.
๋น
๋ฐ์ดํฐ๋ถ์์์ ๋งค์ฐ ๋ง์ ํญ๋ชฉ์ด ์๋ ๋ฐ์ดํฐ์ํธ์์ ๋ถ์์ 'ํ์ํ ํญ๋ชฉ๋ง ์ถ๋ ค์ ์๋ก์ด ํ
์ด๋ธ๋ก ๋ง๋ ๋ค' ํ์ฉํ ์ ์๋ค.
์ํธํ ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ
ํ
์ด๋ธ์ ์
๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์จ๊ธฐ๊ณ ๋ณตํธํํด์ ์ฝ์ ์ ์๋ค. ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ด๊ณ ํด์๋ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด๋ ๊ฒ์ด๋ค.
์ฐ์ ์ํธํ๋ ๋ง ๊ทธ๋๋ก ์ด๋ค TEXT ๋ฐ์ดํฐ๋ฅผ ์์๋ณผ ์ ์๊ฒ ์ํธ์ฒ๋ผ ๋ง๋๋ ๊ฒ์ผ๋ก ์๋ฅผ ๋ค์ด 'password'๋ผ๋ ๋๊ตฌ๋ ์์๋ณผ ์ ์๋ <ํ๋ฌธ>์ ์ํธํํ๋ฉด ‘0D15222D3D8E40ECCE7AEDC3B8C4280D’์์ผ๋ก ๋ณํ๊ฒ ๋๊ณ , ๋ณตํธํ๋ ์ด๊ฒ์ ๋ค์ 'password'๋ผ๋ <ํ๋ฌธ>์ผ๋ก ๋๋๋ฆฌ๋ ๊ฒ์ ๋งํ๋ค.
์ํธํ์๋ ๋จ๋ฐฉํฅ๊ณผ ์๋ฐฉํฅ์ด ์๋๋ฐ,
โ ๋จ๋ฐฉํฅ ์ํธํ๋ ์ฃผ๋ก DB ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๊ฐ ์ ์ฅ๋์ด ์๋ ๊ฒ์ฒ๋ผ ์ ์ฅ ์ดํ์ ๋ค์๋ <ํ๋ฌธ>์ผ๋ก ๋ณผ ์ ์๋ ๊ฒฝ์ฐ๋ก์จ ์ผ๋ฐ์ ์ผ๋ก MySQL ๋ด์์ ๋ณด๋ฉด ๋ํ์ ์ผ๋ก md5(32 HEX) ๋๋ sha1(40 HEX) ๋ฑ์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
select md5(‘password’);๋ select sha1(‘password’);์์ผ๋ก ์ฌ์ฉํ๋ฉด ํ๋ฌธ์ฅ password์ ํด์๋ ๊ฐ์ ํ์ธํ ์ ์๋ค.
โ ์๋ฐฉํฅ ์ํธํ๋ ์ด๋ฉ์ผ ์ฃผ์๋ ์ ํ๋ฒํธ, ์ ์์๋ช
๋ฑ๊ณผ ๊ฐ์ด ๋ค์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ด ์์ด ์ํธํ ์ดํ ๋ค์ ๋ณตํธํํ์ฌ <ํ๋ฌธ>์ผ๋ก ๋ณผ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ค. ์๋ฐฉํฅ ์ํธํ๋ AES_ENCRYPT(์ํธํ)์ AES_DECRYPT(๋ณตํธํ) ํจ์๋ฅผ ์ด์ฉํด์ ์งํํ๋๋ฐ 128๋นํธ ๊ธธ์ด๋ก ์ธ์ฝ๋ฉ ๋๊ณ , ์์ ํ๋ฉด 256๋นํธ๊น์ง ํ์ฅํ ์ ์๋ค.
InnoDB๋ MyISAM์ ๊ฐ์ฅ ๋ง์ด ์ด๋ค๊ณ
=>password๋ฅผ AES_ENCRYPT() ํจ์๋ฅผ ์ฌ์ฉํด์ hex(AES_ENCRYPT('์ํธํ_ํ _๋ฌธ์์ด', '์ํธํ_ํค')) ํ์์ผ๋ก ์ํธํํด์ ์ ์ฅํ๊ณ ,
๋ณตํธํํ๋๋ฐ ์ญ์ AES_DECRYPT() ํจ์๋ฅผ ์ฌ์ฉํด์ AES_DECRYPT(unhex(์ํธํ๋_๊ฐ), '์ํธํ_ํค') ํ์์ผ๋ก ํด์ค๋ค.
drop database DB_name; ๊ณผ drop table TBL_name; ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ
์ด๋ธ์ ์์จ ์ ์๋ค.
ํ
์ด๋ธ ๋ด์ ๋ฐ์ดํฐ ์ญ์
โช DELETE : ์ ์ฒด ๋ฐ์ดํฐ๋ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ํ
์ด๋ธ์ ๊ทธ๋๋ก ๋ ๋ , ์ญ์ ํ ๋ฐ์ดํฐ ๋ณต์ ๊ฐ๋ฅ
โช TRUNCATE : ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ํ
์ด๋ธ์ ๊ทธ๋๋ก ๋๋ , ์ธํ
์ค ๋ฑ๋ ์ญ์ , ์ญ์ ํ ๋ด์ฉ ๋ณต์ ๋ถ๊ฐ
'๐๋ฐ์ดํฐ๋ฒ ์ด์ค > ๐DBMS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ด (0) | 2023.09.26 |
---|---|
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ ์ ๋ฆฌ + CentOS ๋ฐ Ubuntu์์ ์๋ (8) | 2023.05.20 |
์์ฒด ์กฐ์ธ, MySQL ๋ฐ์ดํฐ ํ์ (2) | 2023.05.16 |
๋ฐ์ดํฐ์ ์ถ๊ฐ, ์์ , ์ญ์ (2) | 2023.05.15 |
DBMS ์ค๋ฆ์ฐจ์ ๋ด๋ฆผ์ฐจ์ ์กฐํํ๊ธฐ limit( ์ถ๋ ฅ ๊ฐ์ ์ ํ) ์ค๋ณต ์ ๊ฑฐ ํ๊ท (avg) ์ธ๊ธฐ(count) ์กฐ๊ฑด์(having) - group by์์ ์ฌ์ฉ (5) | 2023.05.12 |