。공부 。

<MySql>Mysql 데이터베이스란? 'user'테이블과 'db'테이블?

kyoe 2007. 10. 11. 00:56
- MySQL DBMS에는 전체 DBMS를 관리하는 데이터베이스가 존재한다. 이 데이터베이스의 이름은 'mysql'이      다.(MySQL DBMS와 mysql 데이터베이스를 구분할것)

- mysql 데이터베이스는 root 관리자만이 사용할 수 있는 데이터베이스로 사용자와 DBMS 내에 생성될 모든 데이터베이스를 관리한다. 결국 사용자를 등록하고 데이터베이스를 생성하여 관리하는 것은 이'mysql'데이터베이스를 관리한다는 것을 의미한다.

- mysql 데이터베이스 내에는 여섯개의 테이블이 존재한다.
    >columns_priv
    >db
    >func
    >host
    >tables_priv
    >user
위의 테이블에서 사용자에 관계되는 테이블은 'user'이고, 데이터베이스에 관계되는 테이블은 'db'이다.

- user table : 사용자의 아이디와 패스워드를 저장한다.
                  : 사용자를 등록한다는 말은 이 테이블 내에 사용자의 정보를 입력한다는것을 의미한다.
- db table : 사용자의 아이디와 그 사용자가 이용할 데이터베이스를 지정한다.
따라서 'user' 테이블과 'db'테이블을 통해 어느사용자가 어떤 아이디와 패스워드로 MySQL DBMS에 접근해 어떤 데이터베이스를 사용하는지를 알수있게된다.

* 'user' 테이블 내의 권한 설정 *
- user 테이블에는 서버이름이 저장될 'host', 사용자의 아이디가 저장되는 'user' 그리고 사용자의 패스워드가 암호화되어 저장되는 'password' 외에 다수 개의 권한들이 존재 하는것을 볼수있다.
- 각 권한의 값이 'Y' 값을 가지면 권한이 있는것을 의미하고 'N' 값을 가지는 경우  권한이 없는것을 의미한다.(모든권한의 Default는 'N'으로 설정되어 있다)
- 일반 사용자는 이 모든 권한 값에 'N'값을 가지게 한다. 만약, 특정 권한 값이 'Y'라면 이는 <이 아이디를 가 진 사람은 그 일을 할 수 있는 권한을 가진다.> 라는걸 의미하게 된다. 따라서, 일반 사용자가 'user'테이블내에서 권한을 가질 경우 다른사람 소유의 데이터베이스 역시 접근할 수 있기 때문에 보안에 문제가된다.
(root 관리자는 이테이블에서 모든권한에 'Y'를 갖는다.)

* 'db' 테이블 내의 권한 설정 *
- db테이블에는 서버이름을 나타내는 'host',데이터베이스의 이름을 나타내는 'db'그리고 그 데이터베이스를 사용할 수 있는 권한을 가진 사람의 아이디를 나타내는 user외에 Default값으로 모두'N'으로 설정된 12개의 권한이 존재한다.
- 이 테이블에 표현되는 권한은 모두 'Y'로 설정되어야 한다. 이유는 이 권한들이 'Y'값을 가진다는 의미는 <이 사용자는 본인에게 허가된 해당 데이터베이스에 대해 모든 일을 할수있다.>되기 때문이다.
('user'테이블과 'db' 테이블에 대한 연산을 통해 사용자가 등록되고 관리되는것이다.