-
[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.1Connection 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 secThreads: 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 = utf8service 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