>  기사  >  데이터 베이스  >  데이터베이스를 설계하고 권한을 부여하는 방법은 무엇입니까?

데이터베이스를 설계하고 권한을 부여하는 방법은 무엇입니까?

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-07-07 09:14:252838검색

데이터베이스에서는 사용자에게 권한 부여, 데이터베이스 설계 등 다양한 작업을 수행할 수 있습니다. 오늘은 데이터베이스를 설계하고 권한을 부여하는 방법을 소개하겠습니다.

데이터베이스를 설계하고 권한을 부여하는 방법은 무엇입니까?

권한 및 디자인 데이터베이스

사용자 관리

SQLyog를 사용하여 사용자 생성 및 권한 부여 데모

기본 명령

/* 用户和权限管理 */ ------------------
用户信息表:mysql.user

-- 刷新权限
FLUSH PRIVILEGES
 
-- 增加用户  CREATE USER kuangshen IDENTIFIED BY '123456'
CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串)
    - 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
    - 只能创建用户,不能赋予权限。
    - 用户名,注意引号:如 'user_name'@'192.168.1.1'
    - 密码也需引号,纯数字密码也要加引号
    - 要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD

-- 重命名用户  RENAME USER kuangshen TO kuangshen2
RENAME USER old_user TO new_user

-- 设置密码
SET PASSWORD = PASSWORD('密码')    -- 为当前用户设置密码
SET PASSWORD FOR 用户名 = PASSWORD('密码')    -- 为指定用户设置密码

-- 删除用户  DROP USER kuangshen2
DROP USER 用户名

-- 分配权限/添加用户
GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] 'password']
    - all privileges 表示所有权限
    - *.* 表示所有库的所有表
    - 库名.表名 表示某库下面的某表

-- 查看权限   SHOW GRANTS FOR root@localhost;
SHOW GRANTS FOR 用户名
    -- 查看当前用户权限
    SHOW GRANTS; 或 SHOW GRANTS FOR CURRENT_USER; 或 SHOW GRANTS FOR CURRENT_USER();

-- 撤消权限
REVOKE 权限列表 ON 表名 FROM 用户名
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名    -- 撤销所有权限

권한 설명

-- 权限列表
ALL [PRIVILEGES]    -- 设置除GRANT OPTION之外的所有简单权限
ALTER    -- 允许使用ALTER TABLE
ALTER ROUTINE    -- 更改或取消已存储的子程序
CREATE    -- 允许使用CREATE TABLE
CREATE ROUTINE    -- 创建已存储的子程序
CREATE TEMPORARY TABLES        -- 允许使用CREATE TEMPORARY TABLE
CREATE USER        -- 允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。
CREATE VIEW        -- 允许使用CREATE VIEW
DELETE    -- 允许使用DELETE
DROP    -- 允许使用DROP TABLE
EXECUTE        -- 允许用户运行已存储的子程序
FILE    -- 允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE
INDEX     -- 允许使用CREATE INDEX和DROP INDEX
INSERT    -- 允许使用INSERT
LOCK TABLES        -- 允许对您拥有SELECT权限的表使用LOCK TABLES
PROCESS     -- 允许使用SHOW FULL PROCESSLIST
REFERENCES    -- 未被实施
RELOAD    -- 允许使用FLUSH
REPLICATION CLIENT    -- 允许用户询问从属服务器或主服务器的地址
REPLICATION SLAVE    -- 用于复制型从属服务器(从主服务器中读取二进制日志事件)
SELECT    -- 允许使用SELECT
SHOW DATABASES    -- 显示所有数据库
SHOW VIEW    -- 允许使用SHOW CREATE VIEW
SHUTDOWN    -- 允许使用mysqladmin shutdown
SUPER    -- 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。
UPDATE    -- 允许使用UPDATE
USAGE    -- “无权限”的同义词
GRANT OPTION    -- 允许授予权限


/* 表维护 */

-- 分析和存储表的关键字分布
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE 表名 ...
-- 检查一个或多个表是否有错误
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
-- 整理数据文件的碎片
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

MySQL 백업

데이터베이스 백업의 필요성

  • 중요한 데이터가 손실되지 않도록 하세요

  • 데이터 전송

MySQL 데이터베이스 백업 방법

  • mysqldump 백업 도구

  • SQLyog와 같은 데이터베이스 관리 도구

  • 복사 데이터베이스 직접 파일 및 관련 구성 파일

mysqldump 클라이언트

기능:

  • Dump 데이터베이스

  • 백업용 데이터베이스 수집

  • 데이터를 다른 SQL 서버로 전송하세요. 반드시 MySQL Server일 필요는 없습니다.

-- 导出
1. 导出一张表 -- mysqldump -uroot -p123456 school student >D:/a.sql
  mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)
2. 导出多张表 -- mysqldump -uroot -p123456 school student result >D:/a.sql
  mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)
3. 导出所有表 -- mysqldump -uroot -p123456 school >D:/a.sql
  mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)
4. 导出一个库 -- mysqldump -uroot -p123456 -B school >D:/a.sql
  mysqldump -u用户名 -p密码 -B 库名 > 文件名(D:/a.sql)

可以-w携带备份条件

-- 导入
1. 在登录mysql的情况下:-- source D:/a.sql
  source  备份文件
2. 在不登录的情况下
  mysql -u用户名 -p密码 库名 < 备份文件

정규화된 데이터베이스 디자인

데이터베이스 디자인이 필요한 이유

데이터베이스가 더 복잡하면 데이터베이스를 디자인해야 합니다

잘못된 데이터베이스 디자인:

  • 데이터 중복성, 저장 공간 낭비

  • 데이터 업데이트 및 삽입 예외

  • 낮은 프로그램 성능

좋은 데이터베이스 설계:

  • 데이터 저장 공간 절약

  • 데이터 무결성을 보장할 수 있습니다

  • 이를 촉진합니다 데이터베이스 응용 시스템 개발

소프트웨어 프로젝트 개발 주기에서의 데이터베이스 설계:

  • 요구 사항 분석 단계: 고객의 비즈니스 및 데이터 처리 요구 사항 분석

  • 개요 설계 단계: 데이터베이스 E-R 모델 다이어그램 설계

데이터베이스 단계 설계

  • 정보 수집

    • 시스템 관련 담당자와 소통하고 논의하여 사용자 요구 사항을 완전히 이해하고 데이터베이스에 필요한 사항을 이해합니다. 작업을 완료합니다.

  • 엔티티 식별 [엔티티]

    • 데이터베이스에서 관리할 주요 개체 또는 엔터티를 식별합니다. 엔터티는 일반적으로 명사입니다

  • 각 엔터티에 대한 세부 정보를 식별합니다. [속성]

  • 엔티티 간의 관계를 식별합니다. [관계]

세 가지 주요 패러다임

질문: 데이터 정규화가 필요한 이유는 무엇입니까?

비표준 테이블 디자인으로 인한 문제:

  • 정보 중복

  • 업데이트 예외

  • 삽입 예외

    • 정보를 올바르게 표시할 수 없습니다.

  • 삭제 예외

    • 유실된 정보

세 가지 주요 패러다임

첫 번째 정규형(1st NF)

첫 번째 정규형의 목표는 각 열의 원자성을 보장하는 것입니다. 각 열이 세분화될 수 없는 가장 작은 데이터 단위인 경우 첫 번째 정규형이 충족됩니다.

제2정규형(2nd NF)

제2정규형(2NF)은 제1정규형(1NF)을 기반으로 성립되는데, 즉 제2정규형(2NF)을 만족시키기 위해, 정규형(1NF)을 먼저 만족해야 합니다.

두 번째 정규형에서는 각 테이블이 한 가지만 설명해야 합니다

세 번째 정규형(3rd NF)

관계가 두 번째 정규형을 충족하고 기본 키를 제외한 다른 열이 기본 키 열에 전이적으로 종속되지 않는 경우 , 그러면 세 번째 정규형을 만족합니다.

세 번째 정규형은 데이터 테이블의 각 데이터 열이 기본 키와 직접 관련되고 간접적으로 관련될 수 없도록 보장해야 합니다.

정규화와 성능의 관계

특정 비즈니스 목표를 달성하려면 데이터베이스 정규화보다 데이터베이스 성능이 더 중요합니다

데이터 정규화 중에는 데이터베이스 성능을 종합적으로 고려해야 합니다

데이터를 추가하여 주어진 테이블 필드를 사용하여 정보를 검색하는 데 필요한 시간을 크게 줄입니다.

계산된 열을 주어진 테이블에 삽입하여 쿼리를 용이하게 합니다

관련 학습 권장 사항: mysql 튜토리얼(동영상)

위 내용은 데이터베이스를 설계하고 권한을 부여하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제