MySQL权限管理
        【摘要】  权限管理用户权限分为非常多种,包括全局权限、库权限、表权限、列权限等。-- 赋予权限(GRANT)mysql> GRANT SELECT,INSERT ON *.*             -- 赋予用户选择插入权限(所有库的所有表)    -> TO 'boy'@'localhost'                   -- 不存在将新建用户    -> IDENTIFIED BY '...
    
    
    
    权限管理
用户权限分为非常多种,包括全局权限、库权限、表权限、列权限等。
-- 赋予权限(GRANT)
mysql> GRANT SELECT,INSERT ON *.*             -- 赋予用户选择插入权限(所有库的所有表)
    -> TO 'boy'@'localhost'                   -- 不存在将新建用户
    -> IDENTIFIED BY '123456'                 
    -> WITH GRANT OPTION;                     -- (可选)允许用户转授权限
-- 撤消权限(REVOKE)
mysql> REVOKE INSERT ON *.*
    -> FROM 'boy'@'localhost';
-- 查看权限
mysql> SELECT Host,User,Select_priv,Grant_priv
    -> FROM mysql.user
    -> WHERE User='testUser';Copy to clipboardErrorCopied
 
 数据库管理
MySQL 内划分为多个互相独立的数据存储区域,调用数据库指令时必须提前声明要使用的数据库。
- 数据库选项信息
 
| 属性 | 含义 | 备注 | 
|---|---|---|
| CHARACTER SET | 编码方式 | 默认为 utf8mb4 | 
| COLLATE | 校对规则 | 默认为 utf8mb4_general_ci | 
-- 查看所有数据库
mysql> SHOW DATABASES;
-- 进入/切换数据库
mysql> USE mydb;
-- 查看当前数据库
mysql> SELECT DATABASE();
-- 创建数据库
mysql> CREATE DATABASE [IF NOT EXISTS] mydb;
mysql> CREATE DATABASE [IF NOT EXISTS] mydb CHARACTER SET utf8mb4;
-- 删除数据库
mysql> DROP DATABASE [IF EXISTS] mydb;
-- 查看数据库选项信息
mysql> SHOW CREATE DATABASE mydb;
-- 修改数据库选项信息
mysql> ALTER DATABASE mydb CHARACTER SET utf8;Copy to clipboardErrorCopied
 
 表管理
- 表属性
 
| 属性 | 含义 | 备注 | 
|---|---|---|
| CHARSET | 字符集 | 默认使用数据库字符集 | 
| ENGINE | 存储引擎 | 默认为 InnoDB | 
| DATA DIRECTORY | 数据文件目录 | |
| INDEX DIRECTORY | 索引文件目录 | |
| COMMENT | 表注释 | 
如果表标记为 TEMPORARY 则为临时表,在连接断开时表会消失。
- 列属性
 
| 属性 | 含义 | 备注 | 
|---|---|---|
| PRIMARY KEY | 主键 | 标识记录的字段。可以为字段组合,不能为空且不能重复。 | 
| INDEX | 普通索引 | 可以为字段组合,建立普通索引。 | 
| UNIQUE | 唯一索引 | 可以为字段组合,不能重复,建立唯一索引。 | 
| NOT NULL | 非空 | (推荐)不允许字段值为空。 | 
| DEFAULT | 默认值 | 设置当前字段的默认值。 | 
| AUTO_INCREMENt | 自动增长 | 字段无需赋值,从指定值(默认 1)开始自动增长。表内只能存在一个且必须为索引。 | 
| COMMENT | 注释 | 字段备注信息。 | 
| FOREIGN KEY | 外键 | 该字段关联到其他表的主键。默认建立普通索引。 | 
表操作
-- 查看所有表
mysql> SHOW TABLES;
-- 创建表
mysql> CREATE [TEMPORARY] TABLE [IF NOT EXISTS] student
       (
           id INT(8) PRIMARY KEY AUTO_INCREMENT=20190001,
           name VARCHAR(50) NOT NULL,
           sex INT COMMENT 'Male 1,Female 0',
           access_time DATE DEFAULT GETDATE(),
           major_id INT FOREIGN KEY REFERENCES major(id) 
       )ENGINE=InnoDB;
mysql> CREATE TABLE grade
       (
           student_id INT,
           course_id INT,
           grade INT,
           PRIMARY KEY (student_id,course_id),
           CONSTRAINT fk_grade_student FOREIGN KEY (student_id) REFERENCES student(id),
           CONSTRAINT fk_grade_course FOREIGN KEY (course_id) REFERENCES course(id)
       );
-- 删除表
mysql> DROP TABLE [IF EXISTS] student;
-- 清空表数据(直接删除表,再重新创建)
mysql> TRUNCATE [TABLE] student;
-- 查看表结构
mysql> SHOW CREATE TABLE student;
mysql> DESC student;
-- 修改表属性
mysql> ALTER TABLE student ENGINE=MYISAM;
-- 重命名表
mysql> RENAME TABLE student TO new_student;
mysql> RENAME TABLE student TO mydb.new_student;      
-- 复制表
mysql> CREATE TABLE new_student LIKE student;                  -- 复制表结构
mysql> CREATE TABLE new_student [AS] SELECT * FROM student;    -- 复制表结构和数据
-- 检查表是否有错误
mysql> CHECK TABLE tbl_name [, tbl_name] ... [option] ...
-- 优化表
mysql> OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
-- 修复表
mysql> REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
-- 分析表
mysql> ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...Copy to clipboardErrorCopied
 
 列操作
-- 添加字段
mysql> ALTER TABLE student ADD [COLUMN] age INT;               -- 默认添加在最后一行
mysql> ALTER TABLE student ADD [COLUMN] age INT AFTER sex;     -- 添加在指定字段后
mysql> ALTER TABLE student ADD [COLUMN] age INT FIRST;         -- 添加在第一行
--修改字段
mysql> ALTER TABLE student MODIFY [COLUMN] id SMALLINT;        -- 修改字段属性
mysql> ALTER TABLE student CHANGE [COLUMN] id new_id INT;      -- 修改字段名
-- 删除字段
mysql> ALTER TABLE student DROP [COLUMN] age;   
-- 编辑主键
mysql> ALTER TABLE student ADD PRIMARY KEY(id,age);           
mysql> ALTER TABLE student DROP PRIMARY KEY;                 
-- 编辑外键
mysql> ALTER TABLE student ADD CONSTRAINT fk_student_class FOREIGN KEY(cid) REFERENCES class(id);
mysql> ALTER TABLE student DROP FOREIGN KEY fk_student_class;  
 
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)