MySQL 데이터베이스 고급 작업 살펴보기

coldplay.xixi
풀어 주다: 2021-01-29 09:18:37
앞으로
1920명이 탐색했습니다.

MySQL 데이터베이스 고급 작업 살펴보기

추천 무료 학습: mysql 비디오 튜토리얼

Article 디렉토리

  • 고급 데이터 테이블 작업
    • 준비: MySQL 데이터베이스 설치
  • 1. 테이블 복제
    • 방법 1
    • 방법 2
  • 2. 테이블을 지우고 테이블의 모든 데이터 삭제
    • 방법 1
    • 방법 2
  • 3. 임시 테이블 생성
  • 4. 생성 외래 키 제약 조건
    • 6 MySQL의 일반적인 제약 조건
  • 5. 데이터베이스 사용자 관리
    • 1. 사용자 정보 보기
    • 3. 사용자 삭제.
    • 5. 현재 로그인 사용자 비밀번호 수정
    • 6. 다른 사용자의 비밀번호 수정
    • 7. 루트 비밀번호를 잊어버린 솔루션
    • 6. 데이터베이스 사용자 인증
  • 1. 권한 부여
  • 2 . 권한 보기
    • 3. 권한 취소
    고급 데이터 테이블 작업

준비: MySQL 데이터베이스 설치

Shell 스크립트 원클릭 배포 - MySQL 소스 코드 컴파일 및 설치

create database CLASS;
use CLASS;

create table TEST (id int not null,name char(20) 	not null,cardid varchar(18) not null unique 	key,primary key (id));

insert into TEST(id,name,cardid) values (1,'zhangsan','123123');

insert into TEST(id,name,cardid) values (2,'lisi','1231231');

insert into TEST(id,name,cardid) values (3,'wangwu','12312312');
select * from TEST;
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기 1. 테이블 복제


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

방법 1

例:create table TEST01 like TEST;
select * from TEST01;

desc TEST01;
insert into TEST01 select * from TEST;
select * from TEST01;
로그인 후 복사

방법 2MySQL 데이터베이스 고급 작업 살펴보기

例:create table TEST02 (select * from TEST);
select * from TEST02;
로그인 후 복사

둘째, 테이블을 지우고 테이블 DataMySQL 데이터베이스 고급 작업 살펴보기

Method 1

delete from TEST02;
로그인 후 복사

#DELETE 테이블을 지운 후 반환된 결과에는 삭제된 레코드 항목이 포함됩니다. DELETE는 작업 시 레코드 데이터를 행별로 삭제합니다. 테이블의 자동 증가 필드는 DELETE FROM을 사용합니다. 모든 레코드를 삭제한 후 새로 추가된 레코드는 원래 가장 큰 레코드 ID의 레코드를 계속 씁니다

例:create table if not exists TEST03 (id int primary 	key auto_increment,name varchar(20) not null,cardid varchar(18) not null unique key);
show tables;

insert into TEST03 (name,cardid) values ('zhangsan','11111');		
select * from TEST03;
delete from TEST03;

insert into TEST03 (name,cardid) values ('lisi','22222');
select * from TEST03;
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기

방법 2MySQL 데이터베이스 고급 작업 살펴보기

例:select * from TEST03;
truncate table TEST03;
insert into TEST03 (name,cardid) values ('wangwu','33333');
select * from TEST03;
로그인 후 복사

# TRUNCATE 테이블을 지운 후 삭제된 항목을 반환하지 않습니다. TRUNCATE가 작동하면 테이블 구조를 그대로 다시 설정하므로 TRUNCATE TABLE을 사용하여 테이블의 데이터를 지운 후 TRUNCATE가 테이블을 더 빨리 지웁니다. , ID는 1부터 다시 기록됩니다.

MySQL 데이터베이스 고급 작업 살펴보기 3. 임시 테이블 생성


임시 테이블이 성공적으로 생성된 후에는 SHOW TABLES 명령을 사용하여 생성된 임시 테이블을 볼 수 없습니다. 임시 테이블은 연결이 종료된 후에 삭제됩니다. 연결을 종료하기 전에는 DROP TABLE 문을 사용하여 수동으로 임시 테이블을 직접 삭제하는 등 추가, 삭제, 수정, 쿼리 등의 작업을 수행할 수도 있습니다.

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

例:create temporary table TEST04 (id int not null,name varchar(20) not null,cardid varchar(18) not null unique key,primary key (id));
show tables;

insert into TEST04 values (1,'haha','12345');	
select * from TEST04;
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기4. 외래 키 제약 조건 만들기MySQL 데이터베이스 고급 작업 살펴보기

데이터 무결성 및 일관성 보장 외래 키 정의: 동일한 속성 필드 x가 테이블 1에서는 기본 키이고, 테이블 2에서는 기본 키인 경우 기본 키가 아닌 필드 x를 테이블 2의 외래 키라고 합니다.

기본키 테이블과 외래키 테이블의 이해:

1. 공통키워드가 기본키인 테이블이 기본키 테이블(부모테이블, 메인테이블)
2. 공통키워드가 외래키인 테이블 는 외래 키 테이블입니다(테이블, 모양)

참고: 외래 키와 연결된 마스터 테이블의 필드는 기본 키로 설정되어야 하며, 슬레이브 테이블은 마스터 및 테이블의 필드가 될 수 없습니다. 슬레이브 테이블의 데이터 유형, 문자 길이 및 제약 조건은 동일합니다. 여기에 설명되지 않은 외래 키 이름을 삭제하세요

例:create table TEST04 (hobid int(4),hobname varchar(50));
create table TEST05 (id int(4) primary key auto_increment,name varchar(50),age int(4),hobid int(4));

alter table TEST04 add constraint PK_hobid primary key(hobid);
alter table TEST05 add constraint FK_hobid foreign key(hobid) references TEST04(hobid);
로그인 후 복사

MySQL의 6가지 공통 제약 조건

主键约束 primary key
外键约束 foreign key
非空约束 not null
唯一约束 unique [key
默认值约束 default
自增约束 auto_increment

五、数据库用户管理

1、新建用户

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
로그인 후 복사

‘用户名’:指定将创建的用户名

‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%

‘密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;
------若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); 获取密文,再在语句中添加 PASSWORD ‘密文’;
------若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)

例:create user 'zhangsan'@'localhost' identified by '123123';
select password('123123');
create user 'lisi'@'localhost' identified by password '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1';
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기


2、查看用户信息

创建后的用户保存在 mysql 数据库的 user 表里

USE mysql;
SELECT User,authentication_string,Host from user;
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기

3、重命名用户

RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost';
SELECT User,authentication_string,Host from user;
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기

4、删除用户

DROP USER 'lisi'@'localhost';
SELECT User,authentication_string,Host from user;
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기

5、修改当前登录用户密码

SET PASSWORD = PASSWORD('abc123');
quit
mysql -u root -p
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기

6、修改其他用户密码

SET PASSWORD FOR 'wangwu'@'localhost' = PASSWORD('abc123');
use mysql;
SELECT User,authentication_string,Host from user;
로그인 후 복사

7、忘记 root 密码的解决办法

1、修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql

vim /etc/my.cnf
[mysqld]
skip-grant-tables					#添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql								#直接登录
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기
MySQL 데이터베이스 고급 작업 살펴보기

2、使用 update 修改 root 密码,刷新数据库

UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('112233') where user='root';
FLUSH PRIVILEGES;
quit

再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务。
mysql -u root -p
112233
로그인 후 복사

MySQL 데이터베이스 고급 작업 살펴보기

六、数据库用户授权

1、授予权限

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。

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

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。*例如,使用“kgc.*”表示授权操作的对象为 kgc数据库中的所有表。

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.lic.com”、“192.168.184.%”等。

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空。
로그인 후 복사

#允许用户wangwu在本地查询 CLASS 数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录。

例:
GRANT select ON CLASS.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456';
quit;
mysql -u wangwu -p
123456
show databases;
use information_schema;
show tables;
select * from INNODB_SYS_TABLESTATS;
로그인 후 복사

#允许用户wangwu在本地远程连接 mysql ,并拥有所有权限。

quit;
mysql -u root -p112233
GRANT ALL PRIVILEGES ON *.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456';

flush privileges;
quit

mysql -u wangwu -p123456
create database SCHOOL;
로그인 후 복사

2、查看权限

SHOW GRANTS FOR 用户名@来源地址;

例:
SHOW GRANTS FOR 'wangwu'@'localhost';
로그인 후 복사

3、撤销权限

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

例:quit;
mysql -u root -p112233
SHOW GRANTS FOR 'wangwu'@'localhost';
REVOKE SELECT ON "CLASS".* FROM 'wangwu'@'localhost';

SHOW GRANTS FOR 'wangwu'@'localhost';
로그인 후 복사

#USAGE权限只能用于数据库登陆,不能执行任何操作;USAGE权限不能被回收,即 REVOKE 不能删除用户。

flush privileges;
로그인 후 복사

更多相关免费学习推荐:mysql教程(视频)

위 내용은 MySQL 데이터베이스 고급 작업 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿