ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL-Maria DB] 인코딩 및 권한 설정, 각종 명령어 확인
    MySQL-Maria 2019. 7. 30. 15:30

    ### 인코딩 설정하기

    명시적으로 설정하지 않으면 기본 캐릭터 셋은 latin1 이 된다

    MariaDB [mysql]> status;

    ------------------------------------------------------------------------------------------------------------------------------
    mysql  Ver 15.1 Distrib 10.0.36-MariaDB, for Linux (x86_64) using readline 5.1

    Connection id:  12
    Current database: mysql
    Current user:  root@localhost
    SSL:   Not in use
    Current pager:  stdout
    Using outfile:  ''
    Using delimiter: ;
    Server:   MariaDB
    Server version:  10.0.36-MariaDB MariaDB Server
    Protocol version: 10
    Connection:  Localhost via UNIX socket
    Server characterset: 
    latin1
    Db     characterset: 
    latin1
    Client characterset:
     latin1
    Conn.  characterset: 
    latin1
    UNIX socket:  /var/lib/mysql/mysql.sock
    Uptime:   2 min 35 sec

    Threads: 1  Questions: 72  Slow queries: 0  Opens: 19  Flush tables: 1  Open tables: 82  Queries per second avg: 0.464
    ------------------------------------------------------------------------------------------------------------------------------

    또는 다음과 같이 mysql 콘솔에서 show variable 을 사용해도 됨

    MariaDB [mysql]>show variables like 'char%';​

    ​+--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | latin1                     |
    | character_set_connection | latin1                     |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | latin1                     |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

    ​확인을 완료 했으니 설정을 해보자

    vi /etc/my.cnf 에 아래 설정을 넣어주자(설정을 적용한 후에 데이터베이스나 테이블을 생성해야 적용됨)

    ​[client]
    default-character-set=utf8

    [mysql]
    default-character-set=utf8

    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8

    service mysql restart   서비스를 재시작

     

     

     

    ### 접근 사용자 계정 생성, 권한부여 및 확인하기

    **일단 본론으로 들어가기 전 mysql의 신기한 점을 설명하겠다. mysql은 root라는 계정을 생성할때, 외부,내부,특정호스트에 대한계정을 따로 생성해야한다. root라고해서 같은 사용자가 아니다 라는 점이다. 

     

    1. 사용자계정  확인 및 생성하기 

    위에 설명 했다시피 내부에서 접근할 계정, 외부에서 접근할 계정, 아니면 특정호스트에서 접근할 계정을 따로 만들어야한다. 

    select host, user,password from user;     사용자계정(외부,내부,특정호스트) 확인

    MariaDB [mysql]> select host, user, password from user; 
    +-----------------------+-------------+-------------------------------------------+
    | host                  | user        | password                                  |
    +-----------------------+-------------+-------------------------------------------+
    | localhost             | root        | *300D1655BAD59B452400EBAA4B5A96 |
    | localhost.localdomain | root        | *300D1655B59B452400EBAA4B5A96 |
    | 127.0.0.1             | root        | *300D1655BAD8952400EBdfgAA4B5A96 |
    | ::1                   | root        | *300D1655BAD800EBAA4dfdffdfdfdB5A96 |
    | localhost             |             |                                           |
    | localhost.localdomain |             |                                           |
    | localhost             | roro      | *2C3DCD9B92E4D0FA549E91gdfg801097 |
    | %                     | roro      | *300D1655BAD89F0EBAdfgdfgdA4B5A96 |
    | %                     | root        | *300D1655BAD89F0EfghfghfBAA4B5A96 |

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

     ​create user <계정명>@localhost identified by 'PW';       내부접근 가능한 사용자 생성                         create user <계정명>@'%' identified by 'PW';               외부접근 가능한 사용자 생성
     create user <계정명>@'특정 IP주소' identified by 'PW';  특정호스트에서만 접근이 가능한 사용자 생성

    FLUSH privileges;

    ​ex) ​create user roro@'%' identified by 'roro'

    위에 나오는 접근위치에따른 사용자계정을 지우려면 drop user roro@'%'; 유저를 삭제해야한다. 

     

    2. 사용자계정 권한확인 및 권한부여 및 삭제하기

    show grants for '계정'@'접속위치';     모든 접근권한 확인하기

    ex) 

    MariaDB [mysql]> show grants for 'roro'@'';   // 모든접속위치를 의미 
    +-------------------------------------------------------------------------------------------------------+
    | Grants for roro@%                                                                                   |
    +-------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'roro'@'%' IDENTIFIED BY PASSWORD '*2fgdfgdfdfgC15226xcxszc97' |
    +-------------------------------------------------------------------------------------------------------+

    1번설명  roro라는 외부접속가능 계정이 생성되었다는것을 의미 권한을의미하지 않음 

     

    grant all privileges on `db명`.`table명` to <계정>@'%' identified by '비번';    특정 DB, 특정 테이블 권한부여

    grant all privileges on *.* to <계정>@'%' identified by '비번';    모든 DB, 모든테이블에 대한 모든 권한부여

    FLUSH privileges;

    ex) grant all privileges on `dbcheck`.* to roro@'%' identified by 'abcd1234';   dbcheck DB에 대한 모든 권한 부여

    MariaDB [mysql]> show grants for 'roro'@''; 
    +-------------------------------------------------------------------------------------------------------+ 
    | Grants for roro@%                                                                                   | 
    +-------------------------------------------------------------------------------------------------------+ 
    | GRANT USAGE ON *.* TO 'roro'@'%' IDENTIFIED BY PASSWORD '*2fgdfgdfdfgC15226xcxszc97' | 
    | GRANT ALL PRIVILEGES ON `dbcheck`.* TO 'roro'@'%'                                                           | 
    +-------------------------------------------------------------------------------------------------------+

    2번설명  roro라는 계정의 dbcheck라는 데이터베이스애 대한 모든 권한이 설정되있음

     

    revoke all privileges on *.* from roro_user@'%';       모든 권한삭제하기

    revoke all privileges on `dbcheck`.* from roro@'%';   dbcheckDB의 권한삭제하기

    FLUSH privileges;

     

     

    ### 각종 명령어 

    ​-   mysqladmin -u root password <PW>;               root비밀번호 초기설정
    -   mysqladmin -u root -p password <PW>          root 비밀번호 재설정
    -   show databases;                                            시스템에 존재하는 데이터베이스리스트 확인
    -   show processlist;                                           현재 접속한 사용자 확인하기
    -   status                                                          현재 사용자 정보 확인

    - ALTER USER 'root'@'localhost' IDENTIFIED BY 'Zmflwps5952@';  비번변경하기

    - grep 'temporary password' /var/log/mysqld.log  :  MySQL5.7 초기 루트 비밀번호 확인 

     

     

    방법 1: SET PASSWORD

    SET PASSWORD FOR '아이디'@'%' = PASSWORD('패스워드');

    방법 2: UPDATE & FLUSH(mysql5.6 이상에서는 굳이 함수를안써도 암호화가 자동으로 되어 방법2번은 굳이 안써도됨)

    UPDATE mysql.user SET authentication_string=PASSWORD('패스워드') WHERE User='아이디' AND Host='%'; FLUSH PRIVILEGES;

    UPDATE mysql.user SET Password=PASSWORD('패스워드') WHERE User='아이디' AND Host='%'; FLUSH PRIVILEGES;

    방법 3: GRANT

    GRANT USAGE ON *.* TO '아이디'@'%' IDENTIFIED BY '패스워드';

    방법 4: mysqladmin

    mysqladmin -u아이디 -p기존패스워드 password 신규패스워드

     

    MySQL 5.7  사용자 생성 및 권한부여 명령어 

    localhost 기준으로,

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

    values('localhost', '계정', password('비밀번호'), '', '', '');

     

    127.0.0.1 기준으로,

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

    values('127.0.0.1', '계정', password('비밀번호'), '', '', '');

     

    외부접속을 기준으로,

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

    values('%', '계정', password('비밀번호'), '', '', '');

     

    생성한 후, 아래 명령어로 flush.

    flush privileges;

     

    권한부여도 마찬가지로, 

     

    grant all privileges on _university.* to 계정@localhost identified by '비밀번호' with grant option;

    grant all privileges on _university.* to 계정@127.0.0.1 identified by '비밀번호' with grant option;

    grant all privileges on _university.* to '계정'@'%' identified by '비밀번호' with grant option;

    flush privileges;

     

     

    'MySQL-Maria' 카테고리의 다른 글

    [MySQL-Maria DB] 설치하기  (0) 2019.07.30
Designed by Tistory.