mysql > MySQL

본문 바로가기

사이트 내 전체검색

뒤로가기 MySQL

mysql

페이지 정보

작성자 최고관리자 작성일 21-02-10 17:14 조회 4,578 댓글 0

본문

Mysql

 create : 2000.07.19
 lastupdate : 오전 10:29 2000-10-17
 version 0.1
 email : jooshop@kg21.net
 make by Joosub. Shin 신주섭

--------------------------------------------------------------------------------

MYSQL에 관한 전반적인 것을 MYSQL문서들을 보면서 실제 실습하며 정리한 것들입니다.
많은 것이 들어 있지 않고 또 자세하지 않습니다. 짧은 제 생각을 정리하기 위해 만들
 어진 문서 입니다. 도움이 되신다면 좋겠습니다. :)
문서에 멋을 더할려고 HTML로 만들었습니다만 이것 마져 배우는 입장에서 사치스럽다는
 생각이 드는 군요 :)

--------------------------------------------------------------------------------


INDEX ...................................................................
 MYSQL 의 ROOT패스워드 설정과 GRANT테이블 설정
 초기 패스워드 변경후 mysql에 접속 할때
 새로운 사용자 권한 추가 & 사용자 추가하기
GRANT TABLE로 루트의 권한을 설정하고 나서 접속이 안될때
 데이타 베이스에 사용자 권한 주기
MYSQL 의 간단한 테스트
 데이터베이스의 생성
 테이블의 생성
mysqldump 를 이용 디비와 테이블 스키마 확인하기

--------------------------------------------------------------------------------

MYSQL 의 ROOT패스워드 설정과 GRANT테이블 설정

 초기 mysql의 root권한은 패스워드가 없으며 로컬 경로에서만 접근이 가능하다.

shell> mysql -u root mysql

 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A

 Welcome to the MySQL monitor. Commands end with ; or \g.
 Your MySQL connection id is 57 to server version: 3.23.10-alpha-log

 Type 'help' for help.

초기 루트의 패스워드를 변경시키기

mysql> UPDATE user SET Password='새로운패스워드' WHERE user='root';
 Query OK, 3 rows affected (0.01 sec)
 Rows matched: 3 Changed: 3 Warnings: 0

 mysql> FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.03 sec)


 * 쉘에서 mysql패스워드 변경하기
ex) mysqladmin -u root password [새로운 패스워드]

shell> mysqlamdin -u root password 1234123

 * root의 패스워드 변경 방법은 첫번째로 하나 아래의 두번째로 하나
 결과는 같다.. 하지만 두번째의 방법이 쉽다.
첫번째의 방법은 패스워드 변경 후 FLUSH PRIVILEGES 명령으로 변경
 사항을 알려야 한다.


Top Index


초기 패스워드 변경후 mysql에 접속 할때
mysql -u root -p
 Enter Passwrod:[패스워드 입력]
Welcome to the MySQL monitor. Commands end with ; or \g.
 Your MySQL connection id is 75 to server version: 3.23.10-alpha-log

 Type 'help' for help.

 mysql>

 * root 패스워드가 설정되어 있다면 서버에 root로 접속할때마다 비밀번호를
 명시해 주어야 한다.


Top Index



새로운 사용자 권한 추가 & 사용자 추가하기
shell> mysql -u root -p
 mysql> GRANT ALL PRIVILEGES ON *.* TO lnxmaster@localhost
 IDENTIFIED BY 'something' WITH GRANT OPTION;
 mysql> GRANT ALL PRIVILEGES ON *.* TO lnxmaster@"%"
 IDENTIFIED MY 'something' WITH GRANT OPTION;
 mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;

 * 위와 같이 설정하면 lnxmaster라는 ID로 어느곳에서나(즉 어느 호스트에서나
 접속이 가능한다 그리고 비밀 번호는 'something'이란 비밀 번호를 쓰고 있다.
admin이란 아이디는 비밀 번호 없이 localhost에서 접속이 가능하고 RELOAD,
와 PROCESS작업을 할 수 있다.


Top Index



 GRANT TABLE로 루트의 권한을 설정하고 나서 접속이 안될때
shell> mysql -u root mysql -p
 Access denied for user : '@unknown' to database mysql

위와 같이 나온다면 GRANT테이블을 생성시 업데이트를 안해 주었거나 HOSTS파일
 등에서 localhosts가 잘못 잡혀 있을 가능성도 있다. 아래와 같이 해주면 무리
 없이 GRANT TABLE을 재수정 할 수 있다.

shell> mysqld --skip-grant-table

 * 위 옵션을 통해서 서버를 다시시작하여야 한다. 그리고 /etc/hosts 파일에
 자신의 호스트 이름을 추가하여야 한다. ( WINDOWS\HOSTS.SAM 파일에도 사용자 호스
 트 목록을 추가해 보라 :)
 * 위 작업을 한 후 FLUSH PRIVILEGES 문이나 mysqladmin flush privileges 명령을
 사용해서 작업한 테이블을 UPDATE 해야 한다.

Top Index


데이타 베이스에 사용자 권한 주기
ex) GRANT ALL ON [데이타베이스이름] to [사용자이름]

mysql) GRANT ALL ON db_test.* to lnxmaster;
 Query OK, 0 rows affected (0.01 sec)

이렇게 되면 db_test란 데이타 베이스는 lnxmaster만이 조작할 수 있다.

Top Index


 MYSQL 의 간단한 테스트

 명령에 따라 값은 같지만 다른 형태의 출력을 보여준다.

shell> mysql

 mysql> SELECT version(), current_date;
 +-------------------+--------------+
 | version() | current_date |
 +-------------------+--------------+
 | 3.23.10-alpha-log | 2000-08-18 |
 +-------------------+--------------+
 1 row in set (0.01 sec)


 mysql> select version(); select current_date;
 +-------------------+
 | version() |
 +-------------------+
 | 3.23.10-alpha-log |
 +-------------------+
 1 row in set (0.00 sec)

 +----------------+
 | current_date |
 +----------------+
 | 2000-10-17 |
 +----------------+
 1 row in set (0.00 sec)


현재의 날짜를 본다.
 +--------------+
 | current_date |
 +--------------+
 | 2000-08-18 |
 +--------------+
 1 row in set (0.00 sec)

 Top Index


현재의 시간을 본다.
mysql> select now();
 +---------------------+
 | now() |
 +---------------------+
 | 2000-08-18 15:31:53 |
 +---------------------+
 1 row in set (0.00 sec)


사용자의 정보를 볼 수 있다.
mysql> select user();
 +---------------------+
 | user() |
 +---------------------+
 | lnxmaster@localhost |
 +---------------------+
 1 row in set (0.00 sec)


사용자의 정보와 현재 날짜, 시간을 표시한다.
mysql> select user(), current_date, now();
 +---------------------+--------------+---------------------+
 | user() | current_date | now() |
 +---------------------+--------------+---------------------+
 | lnxmaster@localhost | 2000-08-18 | 2000-08-18 15:35:17 |
 +---------------------+--------------+---------------------+
 1 row in set (0.00 sec)


현재 데이터 베이스 보기
mysql> show databases;
 +-----------+
 | Database |
 +-----------+
 | db_test |
 | mysql |
 | test |
 | user_data |
 +-----------+
 4 rows in set (0.00 sec)


현재 데이터 베이스의 테이블 보여준다.
mysql> show tables;
 +---------------------+
 | Tables_in_web_board |
 +---------------------+
 | bbsadmin |
 | tb_web |
 | tb_web_log |
 | tbweb |
 | tbweb_log |
 +---------------------+
 5 rows in set (0.00 sec)

 Top Index


데이터베이스의 생성
mysql> create database test2;
 Query OK, 1 row affected (0.00 sec)

생성된 데이터 베이스를 확인한다.
mysql> show databases;
 +-----------+
 | Database |
 +-----------+
 | mysql |
 | test |
 | test2 | <--- 새로 생성된 데이터 베이스
| web_board |
 +-----------+
 4 rows in set (0.00 sec)

 Top Index


테이블의 생성
 테이블을 생성하기 위해서는 먼저 데이터 베이스를 오픈해야 한다.
mysql> use test
 Database changed

테이블을 생성한다.
mysql> CREATE TABLE tblTest (id INT NOT NULL, fldName CHAR(30),
 -> fldAddress CHAR(40), fldPhon CHAR(15), fldEmail CHAR(15),
 -> PRIMARY KEY (id));
 Query OK, 0 rows affected (0.00 sec)

 * 위 명령은 테이블을 생성 시켜 주는 명령이다. tblTest란 이름으로 테이블이 생기며
id, fldName, fldAddress, fldPhon, fldEmail 의 필드가 생긴다.
id는 null값이 존재하지 않으며 INT형으로 선언되어 있다.
fldName 은 CHAR 형으로 선언되어 있으며 사이즈 30으로 선언되어 있다.
fldAddress와 fldPhone, fldEmail 등도 같은 형으로 선언되어 있으며 사이즈는 각각
40, 15, 15 로 설정이 되어 있다.
PRIMARY KEY 는 id란 필드 명으로 선언하였다.

만들어진 테이블을 확인한다.
mysql> show tables;
 +----------------+
 | Tables_in_test |
 +----------------+
 | tblTest |
 +----------------+
 1 row in set (0.01 sec)

만들어진 테이블의 구조(스키마:)를 확인한다.
mysql> desc tblTest;
 +------------+----------+------+-----+---------+-------+---------------------------------+
 | Field | Type | Null | Key | Default | Extra | Privileges |
 +------------+----------+------+-----+---------+-------+---------------------------------+
 | id | int(11) | | PRI | 0 | | select,insert,update,references |
 | fldName | char(30) | YES | | NULL | | select,insert,update,references |
 | fldAddress | char(40) | YES | | NULL | | select,insert,update,references |
 | fldPhon | char(15) | YES | | NULL | | select,insert,update,references |
 | fldEmail | char(15) | YES | | NULL | | select,insert,update,references |
 +------------+----------+------+-----+---------+-------+---------------------------------+
 5 rows in set (0.00 sec)

 Top Index


 mysqldump를 이용 디비와 테이블 스키마 확인하기
 형식> mysqldump -u 유저 -h 호스트(혹은서버) -p 디비명 > 생성파일명
 형식2> msyqldump -u 유저 -h 호스트(혹은서버) -p 디비명 테이블명 > 생성파일명


 디비 스키마 확인
shell> mysqldump -u root -p test > test_dump
위와 같이 하면 test_dump란 파일이 생성된다.


test_dump의 내용
---------------------------------------------------------

# MySQL dump 7.0
 #
 # Host: localhost Database: test
 #--------------------------------------------------------
 # Server version 3.23.10-alpha-log

 #
 # Table structure for table 'tblTest'
 #
 CREATE TABLE tblTest (
 id int(11) DEFAULT '0' NOT NULL,
 fldName char(30),
 fldAddress char(40),
 fldPhon char(15),
 fldEmail char(15),
 PRIMARY KEY (id)
 );

 #
 # Dumping data for table 'tblTest'
 #

 ---------------------------------------------------------

 Top Index

테이블 스키마 확인

댓글목록 0

등록된 댓글이 없습니다.

Copyright © beautipia.co.kr. All rights reserved.

contact : webmaster@beautipia.co.kr

PC 버전으로 보기