ホームページ  >  記事  >  データベース  >  データベースを設計して権限を付与するにはどうすればよいですか?

データベースを設計して権限を付与するにはどうすればよいですか?

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-07-07 09:14:252839ブラウズ

データベースでは、ユーザーに権限を付与したり、データベースを設計したりするなど、さまざまなことができます。今回はデータベースの設計と権限付与の方法を紹介します。

データベースを設計して権限を付与するにはどうすればよいですか?

#権限とデータベースの設計

ユーザー管理

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 client

関数:

    データベースをダンプする
  • バックアップ用のデータベースを収集します
  • データを別の SQL サーバー (必ずしも MySQL サーバーではありません) に転送します

-- 导出
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 モデル図を設計し、必要な情報が正しく完全であることを確認します。
  • ##データベースの設計手順
  • 情報の収集

システムの関連担当者とコミュニケーションを取り、ディスカッションを行って、ユーザーのニーズを完全に理解し、データベースが完了する必要があるタスクを理解します。 .

    • エンティティを識別します [Entity]
  • キー オブジェクトまたはエンティティを識別します。エンティティは通常、名詞です
    • 各エンティティが保存する必要がある詳細情報を識別します [属性]
    • エンティティ間の関係を特定します [関係]
  • #3 つの主要なパラダイム

    ##質問: データ正規化が必要なのはなぜですか?
  • 非標準のテーブル設計によって引き起こされる問題:

重複した情報

更新例外

    挿入例外
  • 情報を正しく表現できません
  • 例外削除

    • ##有効な情報の喪失

  • 3 つの主要なパラダイム

    • 第一正規形 (第 1 NF)

    • #第一正規形の目標は、各列の原子性を確保することです。各列が細分化できない最小のデータ単位であれば、第一正規形を満たすことになります
第 2 正規形 (2nd NF)

第 2 正規形 (2NF) は、第 1 正規形 (1NF) に基づいて、つまり第 2 正規形 (2NF) を満たすように設定されます。 )、最初に第 1 正規形 (1NF) が満たされる必要があります。

第 2 正規形では、各テーブルが 1 つのことだけを記述する必要があります。

第 3 正規形 (3rd NF)

関係が第 2 正規形を満たす場合form 、および主キーを除く他の列が主キー列に推移的に依存していない場合、第 3 正規形は満たされます。第 3 正規形は、データ テーブル内のデータの各列が次のとおりであることを保証する必要があります。主キーに直接関連付けられており、間接的に関連付けることはできません。

正規化とパフォーマンスの関係

特定のビジネス目標を達成するには、データベースの正規化よりもデータベースのパフォーマンスの方が重要ですデータが正規化されている間、データベースのパフォーマンスを包括的に考慮する必要があります。

特定のテーブルにフィールドを追加して、情報の検索に必要な時間を大幅に短縮します。

特定のテーブルに計算列を挿入することで、情報の検索を容易にします。クエリ

関連する学習に関する推奨事項:mysql チュートリアル(ビデオ)

以上がデータベースを設計して権限を付与するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。