MySQL 연구 노트 07 [트랜잭션, 사용자 관리 및 권한 관리]

  • MySQL Document-Dark Horse 프로그래머 (Tencent Weiyun) : https://share.weiyun.com/RaCdIwas
  • 1-MySQL Foundation.pdf, 2-MySQL 제약 조건 및 design.pdf, 3-MySQL 다중 테이블 쿼리 및 트랜잭션 작업 .pdf
  1. MySQL 연구 노트 01 [데이터베이스 개념, MySQL 설치 및 사용] [day01]
  2. MySQL 연구 노트 02 [SQL 기본 개념 및 일반 문법, 데이터베이스 CRUD 작업] [day01]
  3. MySQL 연구 노트 03 [데이터베이스 테이블의 CRUD 작업, 데이터베이스 테이블에 기록 된 기본 작업, 클라이언트 측 그래픽 인터페이스 도구 SQLyog] [day01]

  4. MySQL 연구 노트 04 [데이터베이스 쿼리 작업, 테이블 제약] [day01, day02]

  5. MySQL 연구 노트 05 [다중 테이블 작업, 세 가지 패러다임, 데이터베이스 백업 및 복원] [day02]

  6. MySQL 연구 노트 06 [다중 테이블 쿼리, 하위 쿼리, 다중 테이블 쿼리 연습] [day03]

  7. MySQL 연구 노트 07 [트랜잭션, 사용자 관리 및 권한 관리] [day03]

목차

15 업무

Business_Basic 데모

Transaction_default 자동 커밋 및 수동 커밋

거래 _ 거래의 4 가지 특징

Transaction_Transaction 격리 수준 소개

Transaction_transaction 격리 수준 데모 1

트랜잭션 _ 트랜잭션 격리 수준 데모 2

16 사용자 관리 및 권한 관리

DCL_ 사용자 관리 _ 추가, 삭제 및 확인

사용자 생성

사용자 삭제

DCL_Manage User_Change Password

비밀번호 변경 방법 1

비밀번호 변경 방법 2

mysql에서 루트 사용자의 비밀번호를 잊으셨습니까?

DCL_ 관리 권한

사용자 권한보기

사용자 권한 부여

사용자에게 여러 권한 부여

사용자에게 모든 권한 부여

권한 취소


15 업무

Business_Basic 데모

1. 트랜잭션의 기본 소개
    1. 개념 :
        * 여러 단계를 포함하는 비즈니스 작업이 트랜잭션으로 관리되는 경우 이러한 작업은 동시에 성공하거나 실패합니다.        
    2. 작업 :
        1. 트랜잭션 시작 트랜잭션;
        2. 롤백 : 롤백 (rollback);
        3. 제출 : 커밋
    3. 예 :
        TABLE 계정 생성 (
            ID INT PRIMARY KEY AUTO_INCREMENT를
            NAME VARCHAR (10),
            균형 DOUBLE
        )
        -
        - 데이터 추가 INSERT INTO account (NAME, balance) VALUES ( 'zhangsan', 1000), ( 'lisi', 1000);
        SELECT * FROM account;
        UPDATE account SET balance = 1000;
        -Zhang San은 500 위안을 Li Si로 이체
        -0 . 거래 시작 거래
        시작;
        -1. Zhang San 계정 -500
        
        업데이트 계정 SET 잔액 = 잔액 -500 WHERE NAME = 'zhangsan';
        -2. Li Si 계정         +500-
        문제가 발생했습니다 ...
UPDATE 계정 SET 잔액 = 잔액 + 500 WHERE NAME = ' 리시 ';
        
        - 트랜잭션을 커밋, 실행에 문제가없는 것을 발견
        COMMIT;
        
        - 문제가 발견 롤백 트랜잭션
        ROLLBACK;

Transaction_default 자동 커밋 및 수동 커밋

    4. MySQL 데이터베이스
        의 트랜잭션은 기본적으로 자동 제출됩니다 .
            * 트랜잭션 제출에는 두 가지 방법이 있습니다. * 자동 제출 :
                * mysql이 자동으로 제출됩니다.
                * DML (추가, 삭제, 수정) 문이 자동으로 트랜잭션을 제출합니다.
            * 수동 제출 :
                * Oracle 데이터베이스는 기본적으로 트랜잭션을 수동으로 커밋
                * 트랜잭션을 제출하기 전에 트랜잭션을 시작해야 합니다 * 트랜잭션
        의 기본 커밋 방법을 수정합니다 :
            * 트랜잭션의 기본 커밋 방법보기 : SELECT @@ autocommit; -1은 자동 커밋을 의미합니다. 0은 수동 제출을 의미합니다.
            * 기본 제출 방법을 수정합니다. set @@ autocommit = 0;

  

거래 _ 거래의 4 가지 특징

2. 트랜잭션의 네 가지 주요 특성 :
    1. 원 자성 : 동시에 성공하거나 실패하는 분할 불가능한 작업의 최소 단위입니다.
    2. 지속성 : 트랜잭션이 커밋되거나 롤백 될 때 데이터베이스는 데이터를 지속적으로 저장합니다.
    3. 격리 : 여러 트랜잭션 사이. 독립적 인.
    4. 일관성 : 트랜잭션 작업 전후에 총 데이터 양은 변경되지 않습니다. 3. 트랜잭션
의 격리 수준 (이해)

Transaction_Transaction 격리 수준 소개

3. 트랜잭션 격리 수준 (이해)
    * 개념 : 서로 독립적 인 여러 트랜잭션 간의 격리. 그러나 여러 트랜잭션이 동일한 데이터 배치에서 작동하는 경우 몇 가지 문제가 발생하고 다른 격리 수준을 설정하면 이러한 문제를 해결할 수 있습니다.
    * 문제점 :
        1. 더티 읽기 : 한 트랜잭션이 다른 트랜잭션에서 커밋되지 않은 데이터를 읽습니다
        . 2. 반복불가능한읽기 (가상 읽기) : 동일한 트랜잭션에서 두 번 읽은 데이터가 다릅니다.
        3. 팬텀 읽기 : 트랜잭션 작업 (DML) 데이터 테이블의 모든 레코드와 다른 트랜잭션이 데이터 조각을 추가하고 첫 번째 트랜잭션은 자체 수정을 쿼리 할 수 ​​없습니다.
    * 격리 수준 :
        1. 커밋되지 않은 읽기 : 커밋되지 않은 읽기
            * 생성 된 문제 : 더티 읽기, 반복 불가능한 읽기, 팬텀 읽기
        2. 커밋 된 읽기 : 커밋 된 읽기 (Oracle)
            * 생성 된 문제 : 반복 불가능한 읽기, 팬텀 읽기
        3. 반복 가능한 읽기 : 반복 가능한 읽기 (MySQL 기본값)
            * 문제 : 팬텀 읽기
        4. 직렬화 가능 : 직렬화
            * 모든 문제를 해결할 수 있음

        * 참고 : 작은 격리 수준에서 대규모 격리 수준으로 보안은 점점 더 높아지고 있지만 효율성은 점점 낮아지고 있습니다.
        * 데이터베이스 쿼리 격리 수준 :
            * @@ tx_isolation 선택,
        * 데이터베이스 설정 격리 수준 :
            * 전역 트랜잭션 격리 수준 문자열 설정;

    * 설명 :
        커밋되지 않은 읽기 전역 트랜잭션 격리 수준 설정;
        거래 시작;
        -转账 操作
        업데이트 계정 세트 잔액 = 잔액-500 여기서 id = 1;
        계정 세트 잔액 업데이트 = 잔액 + 500 여기서 id = 2;

  

Transaction_transaction 격리 수준 데모 1

가상 읽기는 MySQL 데이터베이스에서 시연 할 수 없으므로 시연하지 않습니다. 더티 읽기 문제 해결 : 트랜잭션의 격리 수준을 "커밋 된 읽기"로 설정합니다.

트랜잭션 _ 트랜잭션 격리 수준 데모 2

16 사용자 관리 및 권한 관리

DCL_ 사용자 관리 _ 추가, 삭제 및 확인

* SQL 분류 :
    1. DDL : 데이터베이스 및 테이블 운영
    2. DML : 테이블에서 데이터 추가, 삭제 및 수정
    3. DQL : 테이블에서 데이터 쿼리
    4. DCL : 사용자 및 권한 관리

* DBA : 데이터베이스 관리자

* DCL : 사용자 관리, 권한 부여
    1. 사용자 관리 1. 사용자
        추가 :
            * 구문 : CREATE USER'Username '@'Hostname 'IDENTIFIED BY'Password',
        2. 사용자 삭제 :
            * 구문 : DROP USER'Username '@'Hostname ';
        3. 사용자 비밀번호 수정
        4. 사용자 쿼리 :
            -1. mysql 데이터베이스로 전환
            USE myql;
            -2. 쿼리 사용자 테이블
            SELECT * FROM USER;
            
            * 와일드 카드 : %는 사용자가 모든 호스트에서 사용할 수 있음을 의미합니다. 데이터베이스

사용자 생성

  

사용자 삭제

DCL_Manage User_Change Password

        3. 사용자 비밀번호 수정 :
            
            UPDATE USER SET PASSWORD = PASSWORD ( 'new password') WHERE USER = 'user name'; [Modify password method 1]
            UPDATE USER SET PASSWORD = PASSWORD ( 'abc') WHERE USER = 'lisi';
            
            SET PASSWORD FOR'User Name '@'Host Name '= PASSWORD ('New Password '); [비밀번호 수정 방법 2]
            SET PASSWORD FOR'root'@ 'localhost'= PASSWORD ( '123');

            * mysql에서 루트 사용자의 비밀번호를 잊으 셨나요?
                1. cmd-> net stop mysql을 사용하여 mysql 서비스를 중지
                    * 관리자가 cmd를 실행해야합니다.

                2. 인증없이 mysql 서비스를 시작합니다. mysqld --skip-grant-tables
                3. 새 cmd 창을 열고 mysql 명령을 직접 입력 한 다음 Enter를 누릅니다. 성공적으로 로그인 할 수 있습니다
                . 4. mysql 사용,
                5. update user set password = password ( 'your new password') where user = 'root',
                6. 두 개의 창을 닫습니다
                . 7. 작업 관리자를 열고 mysqld.exe를 수동으로 종료합니다. 프로세스
                8. mysql 서비스를 시작
                합니다. 9. 새 암호를 사용합니다.

비밀번호 변경 방법 1

비밀번호 변경 방법 2

mysql에서 루트 사용자의 비밀번호를 잊으셨습니까?

  1. cmd-> net stop mysql stop mysql 서비스 (관리자가 cmd를 실행해야 함)
  2. 인증없이 mysql 서비스 시작 : mysqld --skip-grant-tables
  3. 새 cmd 창을 열고 mysql 명령을 직접 입력 한 다음 Enter 키를 누릅니다. 성공적으로 로그인 할 수 있습니다.
  4. mysql을 사용하십시오.
  5. update user set password = password ( 'your new password') where user = 'root';
  6. 두 개의 창 닫기
  7. 작업 관리자를 열고 mysqld.exe 프로세스를 수동으로 종료합니다.
  8. mysql 서비스 시작
  9. 새 비밀번호로 로그인하십시오.

  

  

DCL_ 관리 권한

2. 권한 관리 :
    1. 조회 권한 :
        -조회 권한
        SHOW GRANTS
        FOR'username '@'hostname ',SHOW GRANTS FOR'lisi'@ '%';

    2.
        권한
        부여 : -권한 부여 데이터베이스 이름에 대한 권한 목록 부여 테이블 이름 'username'@ 'hostname'-
        사용자 Zhang San에게 모든 권한 부여, 모든 데이터베이스의 모든 테이블에
        GRANT ALL ON *. * TO'zhangsan '@'localhost ';
    3. 권한 취소 :
        -권한 취소 :
        데이터베이스 이름에 대한 권한 목록 취소
        .'user name '@'host name '의 테이블 이름, db3.`account` FROM'lisi '@'%의 테이블 이름 ';

사용자 권한보기

사용자 권한 부여

  

사용자에게 여러 권한 부여

사용자에게 모든 권한 부여

권한 취소

추천

출처blog.csdn.net/weixin_44949135/article/details/113697413