728x90
반응형

MySQL 로그 설정 정보 확인 

Mysql에 접속 되어 실행 되는 SQL 들을 확인 할수 있는 방법에 대해 공유 하겠습니다. 

Mysql DB 에 먼저 접속 한후 로그깅 설정 정보를 확인 합니다. 

 

  • SHOW VARIABLES 명령을 통해 Mysql 에 현재 적용된 로그레벨과 로그 파일 위치를 확인 합니다. 
SHOW VARIABLES LIKE '%general%';
  • 실행 결과
mysql> SHOW VARIABLES LIKE '%general%';
+------------------+---------------------------------+
| Variable_name    | Value                           |
+------------------+---------------------------------+
| general_log      | ON                              |
| general_log_file | /var/lib/mysql/24a15adb0cb3.log |
+------------------+---------------------------------+
2 rows in set (0.45 sec)
  • 로그확인(tail -f general_log_file ) 
  •  mysql db에 수행된 sql 에 대해서 조회가 가능 합니다. 
2023-03-07T10:29:12.676978Z       103 Query     show tables
2023-03-07T10:29:28.580687Z       103 Query     SELECT DATABASE()
2023-03-07T10:29:37.020534Z       103 Query     show databases
2023-03-07T10:29:45.540610Z       103 Query     SELECT DATABASE()
2023-03-07T10:29:45.540744Z       103 Init DB   book_db
2023-03-07T10:29:45.541425Z       103 Query     show databases
2023-03-07T10:29:45.541874Z       103 Query     show tables
2023-03-07T10:29:45.542875Z       103 Field List        Book_book 
2023-03-07T10:29:45.749166Z       103 Field List        Book_book_voter 
2023-03-07T10:29:45.773772Z       103 Field List        auth_group 
2023-03-07T10:29:45.822584Z       103 Field List        auth_group_permissions 
2023-03-07T10:29:45.848494Z       103 Field List        auth_permission 
2023-03-07T10:29:45.889815Z       103 Field List        auth_user 
2023-03-07T10:29:45.977628Z       103 Field List        auth_user_groups 
2023-03-07T10:29:46.019426Z       103 Field List        auth_user_user_permissions 
2023-03-07T10:29:46.038964Z       103 Field List        django_admin_log 
2023-03-07T10:29:46.047558Z       103 Field List        django_content_type 
2023-03-07T10:29:46.187867Z       103 Field List        django_migrations 
2023-03-07T10:29:46.208062Z       103 Field List        django_session 
2023-03-07T10:29:51.093263Z       103 Query     show tables
2023-03-07T10:30:02.581078Z       103 Query     select * From auth_user
2023-03-07T10:30:08.757684Z       103 Query     select * From auth_user
2023-03-07T10:30:24.740727Z       103 Query     select * from Book_book
2023-03-07T10:30:57.684327Z       103 Query     SET GLOBAL general_log = 'OFF'

MySQL 로그 설정 변경

  • set global general_log 명령을 통해 로그를 on/off 시킬수도 있습니다. 
  • 해당 명령을 수행한 이후에는 flush logs 명령을 수행 해주세요 
 SET GLOBAL general_log = 'OFF';
 FLUSH LOGS ;

 SET GLOBAL general_log = 'ON';

 

728x90
반응형

'05.DB > Mysql' 카테고리의 다른 글

[Mysql] 유저 생성 /DB생성/권한부여  (0) 2022.05.24
[Mysql] DBeaver Mysql 접속  (0) 2022.04.19
728x90
반응형

Mysql 사용자 생성 및 권한을 부여하는 방법에 대해 간단하게 정리합니다. 

Mysql8 기준으로 작성되어  있습니다. 

Mysql 기본 정보 확인

유저를 생성하기에 앞서 우선 Mysql 기본 정보를 확인 합니다. 

제가 테스트하는 Mysql 은 도커로 설치되었습니다. 

설치 방법은 Mysql 도커 설치 글을 참고 하세요 

root 접속 (mysql -u root  -p --host 127.0.0.1)

root@24a15adb0cb3:/# mysql -u root  -p --host 127.0.0.1        
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1938
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Database 생성 삭제 및 변경 

#database 생성 
create database book_db;

#utf8 로 database 생성 
create database book_db character set utf8mb4 collate utf8mb4_general_ci;

#database 삭제
drop database book_db ;


SET character_set_client = utf8mb4 ;
SET character_set_results = utf8mb4 ;
SET character_set_connection = utf8mb4 ;
ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8mb4 ;

 

mysql> drop database book_db ;
Query OK, 0 rows affected (0.05 sec)

mysql> create database book_db;
Query OK, 1 row affected (0.00 sec)

mysql>  drop database book_db ;
Query OK, 0 rows affected (0.00 sec)

mysql>  create database book_db character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| book_db            |
| information_schema |
| mysql              |
| mysql8             |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.01 sec)

mysql database 선택(use mysql)

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

Database changed

유저정보 확인 (select user, host from user;)

  • 현재 생성되어 있는 유저 정보를 확인합니다. 
mysql> select user, host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| bookadmin        | %         |
| devuser1         | %         |
| root             | %         |
| testuser         | %         |
| devuser1         | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
9 rows in set (0.00 sec)

데이터베이스 정보 확인(show databases;)

  • Mysql에 생성된 database 정보를 확인합니다. 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| mysql8             |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

 

반응형

 

유저 생성 및 권한 추가 삭제

  • 유저를 생성하기 위한 기본 정보가 확인 되었으므로 이제 유저를 생성해 보겠습니다. 

유저 생성 및 권한 부여 

  • 'localhost' 대신 '%' 을 사용할 경우 외부에서도 접속 가능합니다.
# create user '[유저명]'@'[접속허용IP]' identified by '[비밀번호]';
create user 'manager'@'localhost' identified by 'test123';

grant all privileges on [권한 허용 database].* to manager@'[접속허용IP]';
grant all privileges on mysql8.* to manager@'localhost';

 

mysql> create user 'manager'@'localhost' identified by 'test123';
Query OK, 0 rows affected (0.20 sec)

mysql> grant all privileges on mysql8.* to manager@'localhost';
Query OK, 0 rows affected, 1 warning (0.04 sec)

 

유저 정보 변경 

mysql> alter user  manager@'%' identified with mysql_native_password by 'test123';
Query OK, 0 rows affected (0.01 sec)

 

부여된 권한 정보 확인( SHOW GRANTS FOR manager@localhost;)

mysql> SHOW GRANTS FOR manager@localhost;
+-------------------------------------------------------------+
| Grants for manager@localhost                                |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `manager`@`localhost`                 |
| GRANT ALL PRIVILEGES ON `mysql8`.* TO `manager`@`localhost` |
+-------------------------------------------------------------+
2 rows in set (0.00 sec)

생성된 계정에 접속 

mysql -u manager  -p                 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1943
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

테이블 생성

databasee 와 유저 생성에 대해 알아보았습니다. 

이제 해당 databse 에 table 생성해 보겠습니다. 

 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| book_db            |
| information_schema |
| mysql              |
| mysql8             |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
mysql> show tables;
+-------------------+
| Tables_in_book_db |
+-------------------+
| book              |
+-------------------+
1 row in set (0.00 sec)
  • book_db database 에 book 테이블 을 만들고 bookadmin 유저에 권한을 부여하는 명령입니다. 
CREATE TABLE `book` (
 `book_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
 `title` VARCHAR(200) NOT NULL,
 `category` VARCHAR(200) NOT NULL DEFAULT '',
 `price` INT NULL,
 `insert_date` DATETIME NOT NULL DEFAULT NOW(),
 PRIMARY KEY (`book_id`)
);

GRANT EXECUTE, SELECT, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES  ON `book_db`.* TO 'bookadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysql> CREATE TABLE `book` (
    ->  `book_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    ->  `title` VARCHAR(200) NOT NULL,
    ->  `category` VARCHAR(200) NOT NULL DEFAULT '',
    ->  `price` INT NULL,
    ->  `insert_date` DATETIME NOT NULL DEFAULT NOW(),
    ->  PRIMARY KEY (`book_id`)
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> 
mysql> GRANT EXECUTE, SELECT, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES  ON `book_db`.* TO 'bookadmin'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
728x90
반응형

'05.DB > Mysql' 카테고리의 다른 글

Mysql 실행 SQL 확인 방법  (0) 2023.03.07
[Mysql] DBeaver Mysql 접속  (0) 2022.04.19
728x90
반응형

이전 포스트팅 했던 자료에서 Docker 환경으로 Mysql 을 설치했습니다. 

설치 이후에 외부에서 MySQL 접속이 되지 않는 문제가 있어 해결 방법을 정리했습니다. 

 

Mysql 접속을 위한 DBeaver 다운로드 

아래 링크에서 DBeaver  다운로드를 받습니다. 

DBeaver  는 여러종류의 DBMS 에서 제공하는 jdbc 라이브러리를 통해 DB에 접속 할수 있는 유용한 데이터베이스 관리 툴입니다. Oracle,Tibero ,PostgreSQL,MySQL 등 여러 DB에 접속 설정을 통해 편리하게 데이터를 조작 하고 관리할수 있습니다. 

https://dbeaver.io/download/

 

Download | DBeaver Community

Download Tested and verified for MS Windows, Linux and Mac OS X. Install: Windows installer – run installer executable. It will automatically upgrade version (if needed). MacOS DMG – just run it and drag-n-drop DBeaver into Applications. Debian package

dbeaver.io

  • Enterprise Edition 이 있지만 유료 이므로 무료 버전인 Communition 버전을 다운로드 해서 사용 하도록 하겠습니다. 

DBeaver

Mysql  접속 정보 확인 하기 

이전에 작성했던  Docker 환경으로 Mysql 설치 글에서 아래의 설정으로 Mysql8 버전을 설정을 했습니다. 

MYSQL_DATABASE=mysql8
MYSQL_ROOT_PASSWORD=admin
MYSQL_USER=testuser
MYSQL_PASSWORD=userpasswd

설치된 서버 데이터 베이스 확인 하기

  • mysql -u testuser  -p --host 127.0.0.1
  • 접속 후 show databases; 명령을 통해 database 목록을 확인합니다. 
  • Docker 설치시 mysql8 이라는 이름으로 database 설정 했습니다. 

mysql 접속
mysql database 목록 확인

데이터 베이스 Table 목록 확인하기 

  • testuser  이름으로 mysql8 database 에 t_board 와 book 라는 테이블을 만들었습니다. 
  • 테이블 목록 확인 명령은 show tables; 명령으로 확인 할수 있습니다. 
  •  

Mysql table 목록 확인

 

윈도우10 데스크탑 에서 리눅스 MySQAL 데이터 베이스 접속 

이제 다운로드 받은 DBeaver 로 리눅스에 설치된 MySQL 에 접속 테스트를 진행해 보겠습니다. 

DBeaver 실행 & Connect 설정 

플러그버튼을 누르거나 Datbase Navigator 창에서 우클릭해서 create -> Connect 버튼을 눌러서 Mysql 접속 설정을 합니다. 

 

DBeaver Connect 연결

수많은 Database 가 있지만 MySQL 접속할 예정이므로 Mysql 창을 선택합니다.

Mysql 선택

접속 설정 마친후 TesteConnect 버튼을 눌러 정상적으로 테스트가 이루어 지는지 확인합니다. 

예상치 못한 에러가 발생하였습니다. 

  • 에러 :Public Key Retrieval is not allowed

DBbeaver MySQL Connection setting

우측 DBbeaver Driver Properties 탭으로 설정 위치를 변경하여 

allowPublicKeyRetrieval 값을 변경합니다. 

  • allowPublicKeyRetrieval : false ->TRUE

DBbeaver Driver Properties tab

 

프로퍼티값 변경 후 접속하면 아래와 같이 정상적으로 생성했던 테이블 목록이 보입니다. 

Mysql Navigator 화면

 

 

 

 

 

728x90
반응형

'05.DB > Mysql' 카테고리의 다른 글

Mysql 실행 SQL 확인 방법  (0) 2023.03.07
[Mysql] 유저 생성 /DB생성/권한부여  (0) 2022.05.24

+ Recent posts