글목록

레이블이 Database DDL DML DCL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Database DDL DML DCL인 게시물을 표시합니다. 모든 게시물 표시

2014. 2. 28.

[MYSQL][DCL] (ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value / 'x509_issuer' / 'x509_subject')

Mysql 버전이 높아지면서 보안관련 인한 오류입니다.


mysql 에서 유저 생성시 아래의 에러 메시지가 나온다면 생성하는 칼럼이 누락되어 나온 현상이다.

 Field 'ssl_cipher' doesn't have a default value

 Field  'x509_issuer'  doesn't have a default value 

 Field  ' x509_subject'  doesn't have a default value  
  ssl_cipher / ssl 보안 관련 칼럼
x509_issuer , x509_subject / 암호화 관련 칼럼
위의 세가지 칼럼은 mysql의 버전이 업이 되면서 보안에 대한 인식으로 인해서 새롭게 생겨났다.

3개의 에러를 같이 쓴 이유는 유저 생성시 위의 3개중 칼럼이 하나라도 빠지면 나는 에러이다.
결국엔 세개의 칼럼을 추가 해줘야 한다. (물론 null값으로 )

insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)
values('%','username',password
('비밀번호'),'','',''); 




ex)

insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)

values('127.0.0.1','kikcingplay',password('천재'),'','',''); 


insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)

values('%','kikcingplay',password('천재'),'','',''); 


insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)

values('localhost.localdomain','kikcingplay',password('천재'),'','',''); 



 참고) 기존 방식

 INSERT INTO user (Host, User, Password) VALUES ('127.0.0.1', 'kikcingplay', password('천재'));

 INSERT INTO user (Host, User, Password) VALUES ('%', 'kikcingplay', password('천재'));

 INSERT INTO user (Host, User, Password) VALUES ('localhost.localdomain', 'kikcingplay', password('천재'));



2014. 2. 27.

[MYSQL][DCL] 사용자 추가 및 권한 설정

1. root 패스워드 설정
# mysqladmin -u root -p password new-password
2. 사용자 만들기

%
서버아이피
127.0.0.1
localhost
localhost.localdomain
해당도메인
mysql> insert into user(host,user,password,Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv,ssl_cipher,x509_issuer,x509_subject) values('%','toplogic',password('천재'),'Y', 'Y', 'Y', 'Y', 'Y', 'Y','','',''); 
Query OK, 0 rows affected (0.00 sec)
3. 사용자에게 부여할 DB 생성하기
mysql> CREATE DATABASE mydb;
4. DB 권한 부여하기
mysql> INSERT INTO db VALUES('%','디비명','사용자','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','N','N');
Query OK, 0 rows affected (0.00 sec)
5. 사용자 권한 부여 확인
mysql> SHOW GRANTS FOR kikcingplay@localhost;
6. 사용자 권한 뺏기
로그인 가능
mysql> REVOKE ALL PRIVILEGES ON test.* FROM kikcingplay@localhost;
로그인 불가능
mysql> REVOKE USAGE ON *.* FROM kikcingplay@localhost;
7. 사용자 삭제
mysql> DROP USER kikcingplay@localhost;

Database DDL, DML, DCL 이란?

DML
    - SELECT
    - INSERT
    - UPDATE
    - DELETE
    - COMMIT
    - ROLLBACK
    - MERGE

DDL
    - CREATER
    - ALTER
    - DROP
    - TRUNCATE

DCL
    - GRANT
    - REVOKE