Bản trình diễn mysql

If error 'ERROR 1819 [HY000]. Mật khẩu của bạn không đáp ứng các yêu cầu chính sách hiện hành' thì do mysql của bạn đã cài đặt 1 plugin yêu cầu bạn tạo 1 mật khẩu đủ mạnh. Ví dụ như độ dài phải là bao nhiêu, có cả chữ HOA và chữ thường, có ký tự đặc biệt. Để sửa lỗi này, bạn hãy xem hướng dẫn cụ thể tại video sau. nhấp để xem Dòng trên ta đã tạo 1 tên người dùng là 'demo' chỉ có thể truy cập từ chính máy này có sử dụng mật khẩu là 'abc123'. Nếu muốn người dùng truy cập từ mọi nơi thì thay 'localhost' bằng '%'

Xem thông tin về người dùng

SELECT * FROM mysql.user where user = 'demo' \G

Các thông tin về người dùng được lưu trong bảng người dùng của cơ sở dữ liệu mysql

Gán quyền cho user

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';

Lệnh trên gán quyền CHỌN trên bảng 'demo_table' của cơ sở dữ liệu 'demo_database' cho người dùng 'demo'@'localhost'. To view of user ta used

SHOW GRANTS FOR 'demo'@'localhost';

Bỏ quyền của người dùng

REVOKE SELECT ON demo_database.demo_table FROM  'demo'@'localhost';

Câu lệnh loại bỏ quyền CHỌN trên bảng 'bảng demo' của cơ sở dữ liệu 'demo_database' từ người dùng 'demo'@'localhost'

Cài đặt mật khẩu cho người dùng

SET PASSWORD FOR 'demo'@'localhost' = PASSWORD['demo_password'];

Hàm PASSWORD[] để mã hóa mật khẩu của bạn không thể xem được khi truy xuất từ ​​bảng người dùng của cơ sở dữ liệu mysql. Cảm ơn các bạn vì đã đọc bài viết. Mọi người đóng góp hãy để bình luận lại ở bên dưới

Để tiếp tục trong loạt bài Spring Boot này, tôi không thể bỏ qua một phần quan trọng đó là giao tiếp với Cơ sở dữ liệu

Vì thiếu phần kết nối với Database nên chúng ta chưa thể hoàn thiện trang Web của mình, trong bài này chúng ta sẽ tìm hiểu Spring Boot JPA

Trong bài có đề cập kiến ​​thức

  1. ngủ đông
  2. Lombok

Khởi động mùa xuân JPA

Spring Boot JPA là một phần trong hệ sinh thái Spring Data, nó tạo ra một lớp ở giữa tầng dịch vụ và cơ sở dữ liệu, giúp chúng ta thao tác với cơ sở dữ liệu một cách dễ dàng hơn, cấu hình tự động và mã giảm thiểu thừa thãi

Spring Boot JPA đã bao bọc Hibernate và tạo ra một giao diện mạnh mẽ. Nếu như bạn gặp khó khăn khi làm việc với Hibernate thì đừng lo, bạn hãy để Spring JPA làm hộ

Cài đặt

Để thêm Spring JPA vào dự án, bạn cần thêm phần phụ thuộc _______50

Ngoài ra, để kết nối với MySql, chúng ta cần có trình điều khiển tương thích, vì vậy phải bổ sung thêm cả phụ thuộc 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
1 vào pom. xml

quả bông. xml



    4.0.0
    pom
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.5.RELEASE
         
    
    me.loda.spring
    spring-boot-learning
    0.0.1-SNAPSHOT
    spring-boot-learning
    Everything about Spring Boot

    
        1.8
    

    

        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        

        
        
            mysql
            mysql-connector-java
        
    

    
        
        
            org.springframework.boot
            spring-boot-maven-plugin
        
        
    

Constructor directory

Create Table and data

Trước khi bắt đầu, chúng ta cần tạo dữ liệu trong Cơ sở dữ liệu. Ở đây tôi chọn 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
2

Dưới đây là SQL Script để tạo CƠ SỞ DỮ LIỆU 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
3. Chứa một BẢNG duy nhất là 
CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
4

Khi chạy tập lệnh này, nó sẽ tự động chèn vào db 100 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
4

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];

Sau khi chạy xong script trên, chúng ta kiểm tra cơ sở dữ liệu đã có dữ liệu chưa

Tạo Model User

When has been data in Database. Chúng ta sẽ tạo một Class trong Java để ánh xạ thông tin

Phần này chúng ta cần có một chút kiến ​​thức về Hibernate. Nếu bạn chưa biết những Annotation dưới đây để làm gì thì hãy tạm dừng và tìm hiểu Hibernate tại đây

Người dùng. java

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
3

Tới đây là chúng ta đã đi được nửa đường rồi

Vấn đề của hệ thống truyền Hibernate

Thông thường, khi bạn đã định nghĩa 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
6 tương ứng với 
CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
7 trong DB thông qua Hibernate. Nhiệm vụ tiếp theo sẽ là tạo ra các lớp thao tác với DB

Ví dụ muốn truy vấn lấy tất cả 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
4 bằng Hibernate truyền hệ thống sẽ như sau

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
7

Mặc dù Hibernate đã làm rất tốt và giảm thiểu mã cho công việc thao tác với Cơ sở dữ liệu xuống rồi, những gì nó vẫn chưa Chắc chắn là dễ dàng. [

Mục đích ban đầu của Hibernate là giúp người thiết lập chương trình dễ sử dụng, tuy nhiên, trên thực tế, nhiều người gặp khó khăn trong việc sử dụng với Hibernate hơn cả 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
9

Nắm bắt vấn đề này, Spring Data đã trình bao bọc lên Hibernate một lớp nữa được gọi là Spring JPA, giúp cho mọi thao tác với DB của chúng ta rút ngắn xuống còn 1 dòng và hiển nhiên là làm mờ Hibernate giảm đáng kể để tránh rắc rối

Kho lưu trữ Jpa

Để sử dụng Spring JPA, bạn cần sử dụng giao diện 

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
30

Yêu cầu của giao diện này là bạn phải cung cấp 2 thông tin

  1. Thực thể [ Đối tượng tương ứng với Bảng trong DB]
  2. Kiểu dữ liệu của khóa chính [khóa chính]

Ví dụ. Tôi muốn lấy thông tin của bảng 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
4 thì làm như sau

SHOW GRANTS FOR 'demo'@'localhost';
1

Vì thế thôi, 

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
32 đánh dấu 
GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
33 là Bean và chịu trách nhiệm giao tiếp với DB

Spring Boot sẽ tìm thấy tự động và khởi động tạo đối tượng 

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
33 trong Ngữ cảnh. Việc tạo ra 
GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
33 hoàn toàn tự động và tự động cấu hình, vì chúng ta đã kế thừa 
GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
30

Bây giờ, việc lấy toàn bộ 

CREATE DATABASE micro_db;
use micro_db;
CREATE TABLE `user`
[
  `id`         bigint[20] NOT NULL      AUTO_INCREMENT,
  `hp`   		int  NULL          DEFAULT NULL,
  `stamina`    int                  DEFAULT NULL,
  `atk`      int                    DEFAULT NULL,
  `def`      int                    DEFAULT NULL,
  `agi`      int                    DEFAULT NULL,
  PRIMARY KEY [`id`]
];


DELIMITER $$
CREATE PROCEDURE generate_data[]
BEGIN
  DECLARE i INT DEFAULT 0;
  WHILE i < 100 DO
    INSERT INTO `user` [`hp`,`stamina`,`atk`,`def`,`agi`] VALUES [i,i,i,i,i];
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL generate_data[];
4 sẽ như sau

SHOW GRANTS FOR 'demo'@'localhost';
8

Đơn giản và rút gọn hơn rất nhiều

Nếu bạn tìm kiếm thì sẽ thấy 

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
33 có hàng ngàn phương pháp mà chúng ta không cần phải viết lại nữa. Vì nó kế thừa 
GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
30 rồi

Thử nghiệm

Bây giờ chúng ta sẽ làm ứng dụng Demo các tính năng cơ bản với 

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
30

Bước đầu tiên là cấu hình thông tin về MySQL trong 

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
71

đăng kí. đặc tính

REVOKE SELECT ON demo_database.demo_table FROM  'demo'@'localhost';
3

Spring JPA sẽ tự động kết nối cho chúng ta, mà không cần thêm đoạn mã nào cả

Người dùng. java

GRANT SELECT ON demo_database.demo_table TO 'demo'@'localhost';
3

Ứng dụng. java

REVOKE SELECT ON demo_database.demo_table FROM  'demo'@'localhost';
5

OUTPUT chương trình

REVOKE SELECT ON demo_database.demo_table FROM  'demo'@'localhost';
6

 

Bài viết nằm trong sê-ri Làm chủ Spring Boot, Zero to Hero

Bài viết đã được đăng tải lại dưới sự cho phép của tác giả - Thầy Nam là giảng viên Lộ trình Java Spring Boot Full Stack

Chủ Đề