写点什么

MySQL 权限管理

作者:武师叔
  • 2022 年 8 月 08 日
  • 本文字数:1847 字

    阅读完需:约 6 分钟

MySQL权限管理

权限管理

用户权限分为非常多种,包括全局权限、库权限、表权限、列权限等。



-- 赋予权限(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 内划分为多个互相独立的数据存储区域,调用数据库指令时必须提前声明要使用的数据库。


  • 数据库选项信息



-- 查看所有数据库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
复制代码

表管理

  • 表属性



如果表标记为 TEMPORARY 则为临时表,在连接断开时表会消失。


  • 列属性


表操作

-- 查看所有表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;
复制代码


发布于: 刚刚阅读数: 3
用户头像

武师叔

关注

每天丰富自己,去过自己想要的生活! 2022.04.28 加入

一个喜欢最新技术,研发的人工智能专业的大二学生,用自己的代码做一些有意义的事情! 目前大二结束有去大厂研发岗实习的计划,每天丰富自己的技术,去过自己想要的实习生活。

评论

发布
暂无评论
MySQL权限管理_8月月更_武师叔_InfoQ写作社区