MySQL 데이터베이스 관리 - 사용자 관리 (2)

기사 디렉토리

1. 테이블 구조(필드 추가)

1. 테이블 구조 생성

use sky;
#指定主键的第二种方式
create table if not exists sky (id int(4) zerofill primary key auto_increment,name varchar(10) not null,cardid int(18) not null unique key,hobby varchar(50));
desc sky;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

노트:

#if not exists: 생성할 테이블이 이미 있는지 확인하고 없으면 계속 생성함을 나타냅니다.
#int(4) zerofill: 값이 4자리 미만이면 "0"으로 채워짐을 나타냅니다(예: 0001). #auto_increment: 이 필드가 자체 증가
필드임을 나타냅니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

자기성장 필드 데이터는 반복할 수 없으며 자기성장 필드는 기본 키여야 하며 추가된 레코드 데이터가 이 필드의 값을 지정하지 않으면 추가 실패 시 자동으로 한 번 증가함(이것은 가져온 데이터가 테이블의 다음 데이터 옆에 삽입됨) #unique key: 이 필드의 고유 키 제약을 나타내며 이 필드의 데이터는 반복될 수 없음: 테이블에 기본 키는 하나만 있을 수 있지만 테이블에는 여러 개의 고유 키가 있을 수 있음 #not null: 이 필드를 나타냅니다. NULL은 허용
되지 않습니다
.

2. 데이터 테이블 복사

2.1 복사 형식

(1) 형식

create table 生成新的表名 like 复制的表名; 

(2) 예

#复制格式,通过LIKE方法,复制sky表结构生成sun表
create table sun like sky;
#查看库中的表
show tables;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

#备份内容
insert into sun select * from sky;
desc sun;
select * from sun;

[외부 링크 이미지 전송 실패, 소스 사이트에 도난 방지 링크 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

2.2 복제 테이블

데이터 테이블의 데이터 레코드를 새 테이블로 생성

(1) 형식

CREATE TABLE 需要创建的新表(select * from 已存在需要新表复制的数据的表);

(2) 예

#复制test 表数据到test02中
create table banana (select * from sky);
#获取数据表的表结构、索引等信息
show create table banana\G;
select * from banana;
desc banana;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

3. 테이블을 지우고 테이블의 모든 데이터 삭제

(1) 방법 1:

#DELETE清空表后,返回的结果内有删除的记录条目; 
delete from banana;
show tables;
desc banana;
select from * banana;

DELETE가 작동하면 레코드 데이터를 한 줄씩 삭제합니다. 테이블에 자체 증가 필드가 있는 경우 DELETE FROM을 사용하여 모든 레코드를 삭제한 후 새로 추가된 레코드는 계속 자체 증가하고 원래 가장 큰 레코드 ID에서 레코드를 씁니다. 이 삭제는 테이블의 데이터만 삭제합니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

새로 추가된 레코드는 계속해서 자동 증가하고 원래의 가장 큰 레코드 ID 뒤에서 레코드를 씁니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

(2) 방법 2:

#TRUNCATE清空表后,没有返回被删除的条目:
truncate table sun;

TRUNCATE가 작동하면 테이블 구조가 그대로 재설정되므로 TRUNCATE가 DELETE보다 빠르게 테이블을 지우고 TRUNCATE TABLE을 사용하여 테이블의 데이터를 지우면 ID가 1부터 다시 기록됩니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

4. 임시 테이블 생성

임시 테이블이 성공적으로 생성된 후 생성된 임시 테이블은 SHOWTABLES 명령을 사용하여 볼 수 없으며 연결이 종료되면 임시 테이블이 파괴됩니다.
연결을 종료하기 전에 DROP TABLE 문을 사용하여 직접 임시 테이블을 수동으로 삭제하는 등 추가, 삭제, 수정 및 확인과 같은 작업을 수행할 수도 있습니다.
추신: 외래 키를 만들 수 없습니다.

(1) 형식

CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[, ...][, PRIMARY KEY (主键名)]);

(2) 예:

create temporary table tree (id int(4) zerofill primary key auto_increment,name varchar(10) not null,cardid int(18) not null unique key,hobby varchar(10));

insert into tree values (1,'qqq',123456,'running') ;
select * from tree;
show tables;
quit
select * from tree;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

(3) 적용 시나리오

  • 많은 양의 데이터를 삭제할 때와 같은 테스트 환경에서 사용할 수 있습니다. 복잡한 삭제를 수행하기 위해 임시 테이블을 만들 수 있습니다.
  • 요구 사항은 오늘 특정 소프트웨어의 모든 새 번호를 등록하는 것입니다.

2. MySQL의 6가지 일반적인 제약

기본 키 제약 조건(기본 키)
외래 키 제약 조건(외래 키)
null이 아닌 제약 조건(null이 아님)
고유 제약 조건(unique [key|index])
기본값 제약 조건(기본값)
자체 증가 제약 조건(auto_increment)

1. 외래키의 정의

동일한 속성 필드 x가 테이블 1의 기본 키이지만 테이블 2에는 없는 경우 필드 x를 테이블 2의 외래 키라고 합니다.

2. 외래 키 제약 조건 만들기

데이터 무결성과 일관성을 보장하기 위해 외래 키 제약 조건(우발적인 삭제, 수정)을 만듭니다.
기본키 테이블과 외래키 테이블의 이해
(1) 공개키워드를 기본키로 하는 테이블은 기본키 테이블(부모테이블, 기본테이블)
(2) 공개키워드를 외래키로 하는 테이블은 외래키 테이블(슬레이브 테이블, 외부 테이블)
참고: 외래키와 연관된 기본테이블의 필드는 기본키로 설정해야 한다. 슬레이브 테이블은 임시 테이블이 될 수 없으며
마스터 테이블의 외래 키 필드와 슬레이브 테이블의 필드는 데이터 유형, 문자 길이 및 제약 조건이 동일해야 합니다.

3. 메인 테이블 블루 생성

create table blue (hobid int(4),hobname varchar(50));

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

4. 아이스크림에서 테이블 만들기

create table Icecream(id int(4) primary key auto_increment,name varchar(10),age int(3),hobid int(4));

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

5. 파란색 기본 테이블에 기본 키 제약 조건을 추가합니다. 기본 키 이름은 "PK_"로 시작하는 것이 좋습니다.

alter table blue add constraint PK_hobid primary key (hobid);

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

6. 슬레이브 테이블 Icecream 테이블에 외래 키를 추가하고 Icecream 테이블의 hobid 필드와 파란색 테이블의 hobid 필드 간에 외래 키 연결을 설정합니다.

외래 키 이름은 "FK_"로 시작하는 것이 좋습니다.

alter table Icecream add constraint FK_hob foreign key (hobid) references blue (hobid);

7. 쿼리 테이블 문 구조 명령을 사용하여 외래 키 연결을 볼 수 있습니다.

show create table Icecream;
desc blue;
desc Icecream;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

MySQL 데이터베이스에서는 의 MUL타입 KEY이고 풀네임은 MULTIPLE, 다중 인덱스를 의미합니다.

인덱스를 구성하는 테이블에 여러 열이 있는 경우 각 인덱스 열에 MUL유형이 표시됩니다. 이는 일반적으로 CREATE INDEX다중 열 복합 인덱스가 를 사용하여 정의될 때 발생합니다.

MUL타입은 두 가지 의미가 있습니다. 하나는 현재 인덱스 열에 여러 개의 동일한 값, 즉 중복 값이 ​​포함되어 있다는 의미이고 다른 하나는 현재 인덱스 열에 여러 개의 다른 값, 즉 고유하지 않은 값이 포함되어 있음을 의미합니다.

인덱스 열의 유형이 인 경우 MUL쿼리를 사용할 때 성능 문제가 발생할 수 있습니다. MySQL은 모든 인덱스 열에서 어떤 값이 고유한지 결정할 수 없기 때문에 MySQL이 더 많은 데이터를 읽고 더 복잡한 쿼리 작업을 수행하게 됩니다.

EXPLAIN쿼리 성능을 최적화해야 하는 경우 명령을 사용하거나 테이블 구조를 재설계하고 인덱스를 병합하여 인덱스 효율성을 높일 수 있습니다 .

8. 새로운 데이터 레코드를 삽입할 때 마스터 테이블 다음에 슬레이브 테이블을 삽입해야 합니다.

insert into blue values(1,'running');
insert into Icecream values(1,'zs',18,1);

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

9. 데이터 레코드를 삭제할 때는 먼저 테이블을 삭제한 다음 기본 테이블을 삭제해야 합니다. 즉, 기본 키 테이블을 삭제할 때는 먼저 연결된 다른 테이블을 삭제해야 합니다.

drop tables Icecream;
drop tables blue;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

10. 외래 키 제약 조건 보기 및 삭제

#如果要删除外键约束字段先删除外键约束,再删除外键名
show create table Icecream;
alter table Icecream drop foreign key FK_hob;
alter table Icecream drop key FK_hob;
desc Icecream;

[외부 링크 이미지 전송 실패, 소스 사이트에 도난 방지 링크 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

3. 데이터베이스 사용자 관리

1. 새 사용자 만들기

(1) 형식

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

'Username': 생성할 사용자 이름을 지정합니다.
'Source Address': 새로 생성된 사용자가 로그인할 수 있는 호스트를 IP 주소, 네트워크 세그먼트 및 호스트 이름 형식으로 지정합니다. 로컬 사용자는 localhost를 사용하여 모든 호스트에서 로그인할 수 있습니다. 와일드카드를 사용할 수 있습니다. ); 'Ciphertext'; "IDENTIFIED BY" 부분이 생략된 경우 사용자의 암호는 비어 있습니다(권장
하지 않음
) .

(2) 예

#明文创建
create user 'user1'@'localhost' identified by '123456';
#密文创建
select password('abc123');
create user 'user2'@'localhost' identified by password '*6691484EA6B50DDDE1926A220DA01FA9E575C18A';

[외부 링크 이미지 전송 실패, 소스 사이트에 도난 방지 링크 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

2. 사용자 정보 보기

생성된 사용자는 mysql 데이터베이스의 user 테이블에 저장됩니다.

USE mysql;
SELECT User,authentication_string,Host from user;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

3. 중명명 지정

rename user 'user1'@'localhost' to 'lisi'@'localhost';
SELECT User,authentication_string,Host from user;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

4. 사용자 삭제

DROP USER 'lisi'@'localhost' ;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

5. 현재 비밀번호 수정

SET PASSWORD = PASSWORD('abc123');

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

6. 다른 사용자 비밀번호 수정

set password for 'user2'@'localhost' = password('123456');

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

7. 루트 비밀번호 솔루션을 잊어버리세요

修改/etc/my.cnf 配置文件,免密登陆mysql
vim /etc/my.cnf
[mysqld]
#添加,使登录mysql不使用授权表
skip-grant-tables    

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

systemctl restart mysqld
mysql    #直接登录

[외부 링크 이미지 전송 실패, 소스 사이트에 도난 방지 링크 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

然后使用SQL语句修改密码
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';
#刷新,必须大写
FLUSH PRIVILEGES;
quit
mysql -u root -pabc123
PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务,即取消免密登录数据库

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

4. 데이터베이스 사용자 인증

1. 권한 부여

부여 권한 상승

(1) 형식

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

(2) 예

#授权了一个名为 'user2' 的 MySQL 用户对所有数据库和表拥有全部权限
grant all privileges on *.* to 'user2'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)


#권한 목록: "선택, 삽입, 업데이트" 와 같이 쉼표로 구분하여 사용할 수 있는 다양한 데이터베이스 작업을 나열하는 데 사용됩니다 . 모든 작업을 수행할 수 있는 권한을 부여하는 모든 권한에 대해 "all"을 사용합니다.

#Database name.Table name: 권한 부여 작업을 지정하는 데 사용되는 데이터베이스 및 테이블의 이름입니다. 여기서 와일드카드 " "를 사용할 수 있습니다.
예를 들어 "kgc.
"를 사용하여 인증된 작업의 개체가 학교 데이터베이스의 모든 테이블임을 나타냅니다.

#'User name@source address': 접근이 허용된 사용자 이름과 클라이언트 주소, 즉 누가 어디에서 접속할 수 있는지 지정하기 위해 사용합니다. 소스 주소는 도메인 이름, IP 주소일 수 있으며 "%" 와일드카드는 "%.xyw.com", "192.168.80.%" 등과 같이 특정 영역 또는 네트워크 세그먼트의 모든 주소를 나타내는 데 사용할 수 있습니다.

#IDENTIFIED BY: 사용자가 데이터베이스에 연결하기 위해 사용하는 암호 문자열을 설정하는 데 사용됩니다.
새 사용자를 생성할 때 "IDENTIFIED BY" 부분을 생략하면 사용자의 암호가 비어 있게 됩니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 도난 방지 링크 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

주문하다 의미
승인하다 SQL 문에서 권한 부여 작업의 키워드로, 사용자에게 특정 액세스 권한을 부여하는 것을 의미합니다.
모든 권한 사용자에게 모든 권한을 부여하는 것을 의미하는 시스템 권한 키워드.
. 모든 데이터베이스 및 사용자 테이블이 지정되었음을 나타내는 데이터베이스 관련 문.
'user2'@'%'로 'user2'라는 사용자에게 권한을 부여하고 해당 사용자가 % 호스트에서 로그인할 수 있는 사용자 지정 명령문입니다.
'123456'으로 식별 사용자 지정 문은 사용자 'user2'의 로그인 암호가 '123456'임을 나타냅니다.

2. 사용자는 로컬에서 데이터베이스의 모든 테이블의 데이터 레코드를 쿼리할 수 있지만 다른 데이터베이스의 테이블 레코드는 쿼리할 수 없습니다.

grant select on banana.* to 'ff'@'localhost' identified by '123456';
Query OK, 0 rows affected, 2 warnings (0.00 sec)

3. 사용자가 모든 터미널에서 mysql에 원격으로 연결하고 모든 권한을 갖도록 허용합니다.

grant all privileges on *.* to 'zjf'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
#刷新权限
flush privileges;    
quit

시험

mysql -u zjf -p123456
show databases;
use summer;
show tables; .
select * from sun;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

delete from sky;

[외부 링크 이미지 전송 실패, 소스 사이트에 거머리 방지 메커니즘이 있을 수 있으므로 이미지를 저장하고 직접 업로드하는 것이 좋습니다.

흰색 단자 테스트 연결 가능
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

4. 데이터베이스 권한 보기

mysql -u root -pabc123
SHOW GRANTS FOR 用户名@来源地址;
SHOW GRANTS FOR 'zjf'@'%';

여기에 이미지 설명 삽입

5. 데이터베이스 권한 철회

(1) 형식

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;

(2) 예

mysql -u root -pabc123
use mysql;
REVOKE ALL ON *.* FROM 'zjf'@'%'
mysql -uzjf -p123456
SHOW GRANTS FOR 'zjf'@'%';

#USAGE 권한은 데이터베이스 로그인에만 사용할 수 있으며 어떤 작업도 수행할 수 없습니다.
플러시 권한;
여기에 이미지 설명 삽입

1. 데이터베이스에서 삭제, 잘라내기 및 삭제의 차이점

1.1방울

(1) 형식

드롭 테이블 table_name

(2) 특징

  • 빨리 삭제
  • 테이블 및 콘텐츠 및 구조 삭제
  • 가져올 수 없는 곳
  • 롤백 불가(복구 불가)
  • DDL에 속합니다

1.2 자르기

(1) 형식

테이블 자르기 table_name

(2) 특징

  • 빨리 삭제
  • 테이블의 내용 삭제
  • 가져올 수 없는 곳
  • 롤백 불가(복구 불가)
  • DDL에 속합니다

1.3 삭제

(1) 형식

table_name에서 삭제

(2) 특징

  • 삭제가 느리고 한 줄씩 삭제해야 합니다.
  • 테이블 구조는 여기에 있으며 테이블의 내용은 where의 실행에 따라 다릅니다.
  • 어디로 걸릴 수 있습니다
  • 롤백 가능(복구 가능)
  • DML에 속합니다

1.4 애플리케이션 시나리오에서의 선택

  • 테이블이 더 이상 필요하지 않을 때 drop 사용
  • 일부 데이터 행을 삭제하려면 delete를 사용하고 where 절을 추가하십시오.
  • 테이블을 유지하고 모든 데이터를 삭제할 때 자르기 사용

2. 인증된 사용자 권한이 모든 권한을 나타내는 권한은 무엇입니까?

insert(데이터 삽입)
select(데이터 쿼리)
update(테이블 데이터 업데이트)
delete(테이블의 데이터 삭제)
drop(라이브러리 및 테이블 삭제)
cerate(라이브러리, 테이블 생성)
index(인덱스 생성)
alter(테이블 속성 변경)
create view(뷰 생성)
create routine(저장 프로시저 생성)
alter routine(저장 프로시저 수정)
event(이벤트)

추천

출처blog.csdn.net/Katie_ff/article/details/131698258