[37] mysql(2), mysql password 분실 시 대처 방법, myphpadmin(1)

|


- 2014.12.29




1. mysql


[문제]


mysql에 있는 samadal 관련 모든 정보 삭제 후 아래와 같이 설정

DB : dbtest

user : usertest

table : tbtest

fields : num int(10), name char(10), addr char(20), phone int(20)

values : 3개 아무거나



# service mysqld start

mysqld (을)를 시작 중:                                     [  OK  ]

# chkconfig mysqld on

# mysql -u root -p mysql


db 삭제


mysql> drop database dbsamadal;


mysql의 db 테이블 확인하여 해당 정보 삭제


mysql> desc db;

mysql> select host, db, user from db;

mysql> delete from db where user='usersamadal';


mysql의 user 테이블 확인하여 해당 정보 삭제


mysql> desc user;

mysql> select host, user, password from user;

mysql> delete from user where user='usersamadal';


db 생성 및 비어있는 테이블 확인


mysql> create database dbtest;

mysql> use dbtest;

mysql> show tables;

Empty set (0.00 sec)


mysql db 의 user 테이블에 usertest 라는 사용자 생성


mysql> use mysql;

mysql> desc user;

mysql> select host, user, password from user;

mysql> insert into user(host, user, password) values('localhost', 'usertest', password('samadal'));


생성한 사용자를 아까 만든 db와 연동


mysql> desc db;

mysql> select host, db, user from db;

mysql> insert into db values('localhost', 'dbtest', 'usertest',

    -> 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y');

mysql> Bye


# /etc/rc.d/init.d/mysqld restart


usertest 사용자를 이용하여 dbtest db 편집

# mysql -u usertest -p dbtest


조건에 맞는 테이블 생성


mysql> show tables;

mysql> create table tbtest(num int(10), name char(10), addr char(20), phone int(20));

mysql> show tables;


테이블 상세 정보 확인


mysql> desc tbtest;

mysql> select num, name, addr, phone from tbtest;


values 입력


mysql> insert into tbtest(num, name, addr, phone) values(1, 'user1', 'seoul', '010-1111-1111');

mysql> insert into tbtest(num, name, addr, phone) values(2, 'user2', 'busan', '010-2222-2222');

mysql> insert into tbtest(num, name, addr, phone) values(3, 'user3', 'incheon', '010-3333-3333');

mysql> insert into tbtest(num, name, addr, phone) values(4, 'user4', 'daegu', '010-4444-4444');


mysql> select * from tbtest;

+------+---------+----------+---------+

| num  | name | addr     | phone |

+------+---------+----------+---------+

|      1 | user1 | seoul     |      10 |

|      2 | user2 | busan    |      10 |

|      3 | user3 | incheon |      10 |

|      4 | user4 | daegu    |      10 |

+------+--------+-----------+---------+


=> phone 값의 values가 이상하다..?! phone의 type을 잘못 지정했기 때문에 이런 문제 발생.



[수정]


num => id char(10)

phone => char (20)

변경 후 전화번호가 정상적으로 뜨도록 설정




이름 및 타입 변경


mysql> alter table tbtest change num id char(10);

mysql> alter table tbtest modify phone char(20);


새로 phone 값 update


mysql> update tbtest set phone='010-1111-1111' where id='1';

mysql> update tbtest set phone='010-2222-2222' where id='2';

mysql> update tbtest set phone='010-3333-3333' where id='3';

mysql> update tbtest set phone='010-4444-4444' where id='4';


mysql> desc tbtest;

+---------+-----------+--------+------+----------+--------+

| Field   | Type      | Null    | Key | Default | Extra |

+---------+-----------+--------+-----+-----------+--------+

| id        | char(10) | YES  |       | NULL    |           |

| name  | char(10) | YES  |       | NULL    |           |

| add r   | char(20) | YES  |       | NULL    |           |

| phone | char(20) | YES  |       | NULL    |           |

+---------+-----------+--------+-----+-----------+--------+


mysql> select * from tbtest;

+----+---------+-----------+---------------------+

| id   | name  | addr      | phone               |

+----+---------+-----------+---------------------+

| 1    | user1 | seoul     | 010-1111-1111 |

| 2    | user2 | busan    | 010-2222-2222 |

| 3    | user3 | incheon | 010-3333-3333 |

| 4    | user4 | daegu    | 010-4444-4444 |

+----+---------+-----------+---------------------+


=> int형은 오른쪽 정렬이지만 char 형은 왼쪽 정렬인 것도 확인할 수 있다.




[문제]


mysql에 있는 test 관련 정보 삭제 후 아래와 같이 설정

DB : dbtiger

user : usertiger

table : tbtiger

fields : id char(10), name char(10), addr char(50), tel char(20)

values : 3개 아무거나




삭제


# mysql -u root -p mysql

mysql> show databases;

mysql> drop database dbtest;

mysql> show tables;


mysql> desc user;

mysql> delete from user where user='usertest';

mysql> desc db;

mysql> delete from db where db='dbtest';


생성


mysql> create database dbtiger;

mysql> desc user;

mysql> insert into user(host, user, password) values('localhost', 'usertiger', password('samadal'));

mysql> select host, user, password from user;

mysql> desc db;

mysql> insert into db values('localhost', 'dbtiger', 'usertiger',

    -> 'y','y','y','y','y','y','y','y','y','y',

    -> 'y','y','y','y','y','y','y','y','y');

mysql> Bye


# service mysqld restart


# mysql -u usertiger -p dbtiger

mysql> create table tbtiger(id char(10), name char(10), addr char(50), tel char(20));

mysql> desc tbtiger;

mysql> insert into tbtiger values('1', 'aaa', 'seoul', '010-1111-1111');

mysql> insert into tbtiger values('1', 'aaa', 'seoul', '010-2222-2222');

mysql> insert into tbtiger values('1', 'aaa', 'seoul', '010-3333-3333');

mysql> insert into tbtiger values('1', 'aaa', 'seoul', '010-4444-4444');

mysql> select * from tbtiger;




[Tip]


db까지 만든 후 계정생성 및 연동까지 한번에 하는 명령어. (데몬 재시작 필요 없음)

                                      db  table       user         host                                pw

grant all privileges on dbtiger.* to 'usertiger'@'localhost' identified by 'samadal' with grant option;

(db 부분도 * 해버리면 관리자 만드는 것과 똑같은 효과.)




[Tip]


Table 이름 변경

ex)

mysql> rename table tbtiger to tbsilti




[Tip]


데몬 재실행 없이 재실행 효과 주는 명령어. (관리자 계정 이용)

mysql> flush privileges;




[Tip]


mysql 접속시 오류 중 111이 뜰 경우 /var/lib/mysql/mysql.sock 파일 삭제 후 데몬 재실행

만약 오류가 뜨는데 mysql.sock 파일이 없는 경우는 시스템 재부팅 후 연결




2. mysql password 분실 시 대처방법


# netstat -lntup | grep mysqld

# /etc/rc.d/init.d/mysqld stop


안전모드 들어가기 위해 종료되었는지 확인


# netstat -lntup | grep mysqld


# mysqld_safe --skip-grant-tables &


이제 패스워드 없이 접속 된다.


# mysql


mysql> use mysql;

mysql> select host, user, password from user;

mysql> update user set password='' where user='usertiger';

mysql> Bye

# /etc/rc.d/init.d/mysqld restart


-정리

1) mysql 데몬 정지

2) mysqld_safe --skip-grant-tables &

3) mysql

4) 수정

5) mysql 데몬 활성

/usr/bin/mysqld_safe 에 있는 듯한데 관리자만 실행 가능하도록 권한 설정 해야 보안이 더 완벽할듯





3. myphpadmin


mysql 을 그래픽 환경에서 관리할 수 있는 툴.

현재 우리가 사용하고 있는 mysql 버전에 맞게 phpmyadmin 다운로드.


[실습]


phpMyAdmin-4.0.10.7-all-languages 중에 linux에서 압축 풀수 있는 것 1개 다운 받아 업로드 후

internet expoler에서 linux_ip/myadmin 접속 시 페이지 뜰 수 있도록 설정



다운로드 하여 리눅스로 업로드


압축 해제


# tar xvfz phpMyAdmin-4.0.10.7-all-languages.tar.gz

# mv ./phpMyAdmin-4.0.10.7-all-languages/ /myadmin


# vi /etc/httpd/conf/httpd.conf

    556 Alias /myadmin "/myadmin"


# /etc/rc.d/init.d/httpd restart


※ Alias 방식으로 해도 되지만 기존 설정되어있는 메인페이지 디렉터리 안 /myadmin 디렉터리에 압축을 풀어도 된다.




'Study > CentOS' 카테고리의 다른 글

[39] 종합문제(1)_nfs, automount, dns, Apache, mysql  (0) 2015.04.06
[38] myphpadmin(2), xe  (0) 2015.04.06
[36] Apache_VirtualHosts, user directory, mysql(1)  (0) 2015.04.06
[35] 종합 중간점검, Apache_Alias  (0) 2015.04.06
[34] Apache  (0) 2015.04.06
And