본문 바로가기

Computer/Linux

mysql생성,복구,백업

mysql 4.1 이상버젼
== 생성==
mysql>grant all privileges on 계정명.* to 계정명@localhost identified by '비밀번호' ;
all privileges = 모든권한이란뜻.계정명한테 모든 권한을 부여.
계정명@localhost = mysql 서버에 접근 가능한 ip를 지정해주는 방법
localhost 대신 '%' 를 쓸수도있지만 그러면 모든 호스트로부터 허용한다는 뜻
삭제: revoke all privileges , grant option 계정명;
윈도우 경우
1. mysqld-nt --remove
2. mysqld-nt --install
3. net start mysql
리눅스 경우
cp mysql설치디렉토리/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld restart

service mysqld stop
service mysqld start

mysql 접속 방법
[shell]#mysql -u root -p lovetool
- 사용자는 :root
- db명은 : lovetool
비밀번호 바꾸기(1)
mysql> update user
-> set password = password('비번')
-> where user = 'root';
Query OK, 2 row affected (0.00 sec)
비밀번호 바꾸기(2)
mysql> update user set password=password('비번') where user='root';
Query OK, 2 row affected (0.00 sec)

위 과정을 거친후 sql 재기동
[shell]#mysqladmin -u root -p reload [Enter]
사용자 등록방법
mysql> insert into user [Enter]
-> (host,user,password) [Enter]
-> values ('localhost','root',password('비밀번호')) [Enter]
-> ; [Enter]
Query OK, 1 row affected (0.00 sec)
사용자 삭제방법
mysql> use mysql;
mysql>delete from user where user='사용자아이디';

db생성
mysql> create database lovetool;
Query OK, 1 row affected (0.01 sec)
db생성 확인방법
mysql> show databases;
+-----------+
| Database |
+-----------+
| mysql |
| test |
| lovetool |
+-----------+
3 rows in set (0.00 sec)
생성된 db에 관리및 엑세스 권한등을 정의
mysql>desc db; << 'Y' 컬럼수확인
insert into db values('localhost','lovetool','root','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

db 사용유저 확인하기
select host, db, user from db;
사용자확인하기
select user from user;
db삭제, 사용자 권한삭제
drop database 디비명;
delete from db where user='사용자명';
sql 재기동
[shell]# /usr/local/mysql/bin/myaqladmin -u root -p reload
1) 백업하기.
# mysqldump -u유저 -p db명 > db.sql
2) 복구하기
# mysql -u유저 -p -A 디비명 < db.sql
재시작 /etc/rc.d/init.d/mysqld restart
재시작 mysql>flush privileges;
1) 백업하기.
[cream@ns public_html]$ mysqldump -ucream -p12345 creamdb > creamdb.sql
설명) mysqldump --> mysqldump 라는 명령어를 이용하여 DB를 덤프(백업)하라는 명령어 입니다.
-ucream --> -u는 mysql서버에 있는 유저이름을 나타냅니다. cream은 유저명을 말합니다.
-p12345 --> -p는 mysql서버에 cream의 패스워드를 말합니다. 12345는 cream의 패스워드 입니다.
creamdb는 mysql 안에 백업할 DB를 지정해준거에요..
> 는 확실히 알수는 없지만, 화살표 방향으로 파일을 지정한다는 뜻 같습니다.
creamdb.sql 은 어느 파일로 저장을 할 것인지를 나타냅니다.
위처럼 현재위치에서 파일을 저장하는 것이 아니라 파일위치를 지정하실수도 있습니다.
예를 들면 creamdb.sql을 backup 폴더 안에 넣구 싶으시다면,
[cream@ns public_html]$ mysqldump -ucream -p12345 > backup/creamdb.sql
요렇게 해주심 됩니당..
그럼 아래와 같이 creamdb.sql 이란 파일을 확인하실 수 있습니다.
[cream@ns public_html]$ ll
-rw-r--r-- 1 cream webmaste 5408 6월 21 16:21 creamdb.sql
2) 복구하기.
. 데몬이 실행 중인지 확인을 한다.
ps auxc | grep mysqld
. MySQL 서버에서 만든 mysql.sock 파일의 위치를 확인
mysq_config --socket 혹은 netstat -ap grep mysql
위치를 확인했음 -S옵션으로 mysql.sock 파일의 위치를 지정
mysql 지웠을 경우
socket이 안나타난것은 mysql demon이 안뜬것 입니다.
이렇게 해보세요
1) ./mysql_install_db는 하셧겟지요?
2) ./safe_mysqld --user=root &
3) /etc/rc.d/init.d/mysqld restart 하면 자동 sock이 생성됨
[cream@ns public_html]$ mysql -ucream -p12345 creamdb < creamdb.sql
backup 폴더 안에 있다면 파일위치를 아래처럼 해주시면 됩니다.
[cream@ns public_html]$ mysql -ucream -p12345 creamdb < backup/creamdb.sql
=============================================================================
위와 같이 하시면 mysql 안에 creamdb DB가 복구가 되어집니다.
덤프(백업)하는 방법과 다른것이 있다면 앞의 명령어가 mysqldump가 아닌 그냥 mysql 이란 점과
< 표시가 백업할땐 > 이였지만, 복구를 할땐 < 이렇게 반대라는것을 알수 있을것입니다.
별루 안어렵죠? 많이들 아시겠지만, 게시판에 없는듯 하여 함 써봤슴돠~ ^^
다음번에 다른분이 쓰시지 않으신다면,
mysql 전체를 백업하고, 복구 하는 방법에 대해서 쓰겠습니다...^^
====================================================================================

첫번째방법, - mysql 폴더를 전체 카피 한다.
cp -arv /var/lib/mysql /home/cream/public_html/mysql
/var/lib/mysql 안에 있는 내용들을 전부다 /home/cream/public_html/mysq 로 카피를 하라는
명령 입니다. cp 옵션에 -arv 에 대해서 설명을 하자면,
a : 원본 파일 또는 디렉토리의 속성과 시간 등을 그대로 복사.
r : 디렉토리를 복사할 경우 디렉토리에 포함된 모든 파일, 디렉토리까지 복사한다.
v : 복사되는 내용을 그대로 화면에 출력한다.
이런 내용입니당..
복사한 파일들을 잘 보관하신 후에 새로 설치하신 서버라던지 아니면 DB가 망가져서 다시 복구 하실때
/var/lib/mysql 폴더 안에 있는 내용을 지우신 후에 다시 넣어주고 mysql을 재시작 하시면 됩니다.
두번째방법. - mysqldump를 사용한다.
어떻게 보면 두번째 방법이 더 효율적이기도 하고 관리 하기도 편하다는 생각이 드네요..
이건 제가 쓰고 있는 방법인데요...저는 일주일에 한번씩 자동으로 cron을 돌려서
날짜별로 따로 전체DB를 저장 한답니다. 전체 백업 방법을 알아볼까용?
이 명령은 mysql 루트 권한이 있어야 실행되겠져?
[root@ns /]# mysqldump -uroot -p --all-databases > /home/cream/public_html/mysql/alldb.sql
설명을 하자면 mysqldump는 명령어를 말하구요..
-uroot 는 유저는 root 이고
-p는 패스워드를 지정해주는것이구요..root의 패스워드가 12345일때 -p12345 이렇게 하셔도 됩니다.
--all-databases 요건 데이타베이스에 있는 모든 DB를 지칭합니다.
> 는 백업하는 방향을 나타내구여..
/home/cream/puclic_html/mysql/alldb.sql 의 위치로 alldb.sql 이란 이름으로 저장하라는 의미
입니다.
이렇게 하고 확인을 해보시면 alldb.sql 이라구 딱 나올거에여...
복구 하는 방법.
1. 우선 /var/lib/mysql 안에 있는 파일들을 모조리 지워주시구요.
2. [root@ns /]# mysql -uroot -p -A < /home/cream/public_html/mysql/alldb.sql 하신후
패스워드 입력.
3. mysql 재시작. /etc/rc.d/init.d/mysqld restart (RPM설치일 경우)
이렇게 해주시면 /var/lib/mysql/ 폴더 안에 지웠던 파일들이 새로 생성이 되어 있을거에요..

==================================================

mysql종료 재시작
1번째는 프로세스 아이디(uid)를 죽이는 방법
[root@server root]# ps -ax
.
.
.
678 ? s 0:00 ls
680 ? S 0:00 sh /usr/bin/safe_mysqld --log=/var/log/mysql.log
704 ? SN 0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql
738 ? SN 0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql
739 ? SN 0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql
744 ? s 0:00 bash
747 ? s 0:00 ps -ax
뭐 이런식으로 나올겁니다..
그럼 kill 이란 명령어로 간단히 uid만 적어주면 서버는 죽게되죠
예를 들면
[root@server root]# kill -09 680<---uid
이럼 죽게 되죠 ^^
2번째 방법 종료 명령을 알면 되겠죠
[root@server mysql]# mysqladmin -uroot -p shutdown
Enter Password : ********* <--적어 줘야 됨 -_-;
mysql daemon ended
[1]+ Done ./bin/safe_mysqld
[root@server mysql]#
이렇게 해서 종료가 되죠 ^^;
그럼 종료 방법에 대해서 알아봤죠 ^^ 한데 종료 하지 않구 재부팅 하는 방법을
알고 싶다구요 ^^;
그건 더더욱 간단합니다.. 바로 위의 명령어 중에
shotdown을 reload로 바꾸시면 되요

[root@server mysql]# mysqladmin -uroot -p reload
Enter Password : ********* <--역시 적어 줘야 됨

'Computer > Linux' 카테고리의 다른 글

mysql 기본 사용법  (0) 2005.07.14
리눅스에서 php apache설치  (0) 2005.07.14
MYSQL 관련 FAQ  (0) 2005.07.14
명령어 기본편  (0) 2005.06.10
Apache 설치후 보안(조별발표자료)  (0) 2005.06.10