MySQL ROLE

MySQL 8.0 Reference Manual  /  Security  /  MySQL User Account Management  /  Using Roles

how to create role on MySQL database

mysql 8.0 才支持角色。

创建新角色:

CREATE ROLE 'app_developer', 'app_read', 'app_write';

将权限赋予角色:

GRANT ALL ON app_db.* TO 'app_developer';
GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';

创建新用户:

CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass';
CREATE USER 'read_user1'@'localhost' IDENTIFIED BY 'read_user1pass';
CREATE USER 'read_user2'@'localhost' IDENTIFIED BY 'read_user2pass';
CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';

将角色赋予用户:

GRANT 'app_developer' TO 'dev1'@'localhost';
GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';
GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost';

SQL CHECK 约束

http://www.w3school.com.cn/sql/sql_check.asp

MySQL关于check约束无效的解决办法

没找到官方文档。查了下资料发现 MySQL 不支持 CHECK ,加不加都一样。。

示例:

DROP TABLE IF EXISTS employee;
CREATE TABLE employee (
name VARCHAR(50) NOT NULL,
phone_num VARCHAR(20) NOT NULL,
id CHAR(8),
sex CHAR(1), PRIMARY KEY(id), CONSTRAINT check_sex CHECK (sex IN ('f', 'm')),
CONSTRAINT check_id CHECK (id LIKE 'E_______'
) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO employee
(name,
phone_num,
id,
sex)
VALUES
('李四',
'',
'E2008001',
'f'); DROP TABLE IF EXISTS product;
CREATE TABLE product (
name VARCHAR(50) NOT NULL,
id CHAR(9),
product_type VARCHAR(50) NOT NULL,
production_date DATE, PRIMARY KEY(id), CONSTRAINT check_id CHECK (id LIKE 'P%'
AND SUBSTRING(id, , ) = YEAR
(production_date)) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO product
(name,
id,
product_type,
production_date)
VALUES
('飞碟迷宫',
'P20080021',
'玩具',
'2008-10-22'); CREATE TABLE customer (
name VARCHAR(50) NOT NULL,
id CHAR(9),
sex CHAR(1) NOT NULL,
department VARCHAR(50) NOT NULL,
salary VARCHAR(50) NOT NULL,
job_title VARCHAR(50) NOT NULL, PRIMARY KEY(id), CONSTRAINT check_id CHECK (id LIKE 'C%') ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE order_master (
id CHAR(12) PRIMARY KEY,
customer_id CHAR(9) NOT NULL,
employee_id CHAR(8) NOT NULL,
total DECIMAL(8, 2) DEFAULT 0,
-- order_date DATE DEFAULT CURDATE(), 这两行是错的,MySQL目前字段的默认值不支持函数
-- shipping_date DATE DEFAULT CURDATE(), 另外一种解决方案是由应用程序插入默认值
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- shipping_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
-- 或者是用触发器来做
invoice_number VARCHAR(50) UNIQUE, FOREIGN KEY (customer_id)
REFERENCES customer(id), FOREIGN KEY (employee_id)
REFERENCES employee(id)
) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE order_detail (
order_id CHAR(12) NOT NULL,
product_id CHAR(9) NOT NULL,
quantity INT NOT NULL,
price DECIMAL(8, 2), FOREIGN KEY (order_id)
REFERENCES order_master(id), FOREIGN KEY (product_id)
REFERENCES product(id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

MySQL笔记(五)MySQL 角色与SQL CHECK约束的更多相关文章

  1. SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...

  2. SQL CHECK 约束

    SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限 ...

  3. SQL-W3School-高级:SQL CHECK 约束

    ylbtech-SQL-W3School-高级:SQL CHECK 约束 1.返回顶部 1. SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那 ...

  4. 涂抹mysql笔记-搭建mysql高可用体系

    mysql的高可用体系<>追求更高稳定性的服务体系 可扩展性:横向扩展(增加节点).纵向扩展(增加节点的硬件配置) 高可用性<>Slave+LVS+Keepalived实现高可 ...

  5. 【MySQL笔记】mysql来源安装/配置步骤和支持中国gbk/gb2312编码配置

    不久的学习笔记.分享.我想有很大的帮助谁刚开始学习其他人的 备注:该票据于mysql-5.1.73版本号例如 1. mysql源代码编译/安装步骤 1) 官网下载mysql源代码并解压 2) cd至源 ...

  6. MySQL 笔记(Mysql 8.0.16)

    用户登陆 mysql -u user_name -p 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 关闭服务 D:\ ...

  7. 涂抹mysql笔记-管理mysql服务

    -DSYSCONFDIR=/mysql/conf \ 所以在conf下建立my.cnf文件 vi my.cnf [client]port=3306socket=/mysql/conf/mysql.so ...

  8. 涂抹mysql笔记-安装mysql

    1.mysql安装:(1)RPM安装:rpm -ivh xxx 建议安装三个:MySQL-server-VERSION.PLATFORM-cpu.rpmMySQL-client-VERSION.PLA ...

  9. [MYSQL笔记0]MYSQL的安装

    mysql是一种关系型数据库管理系统.以mysql5.7版本为例,安装过程如下: 首先百度出mysql的官网,进入:(以下是自己安装失败的过程,直接下拉最后看大佬的安装过程吧,就是那个红红的网址) 找 ...

随机推荐

  1. Kafka在Linux上安装部署及样例测试

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  2. Nginx 日志 worker_connections are not enough while connecting to upstream

    记一次,排查错误所遇到的问题,和学习到的内容. 上周五,刚上线的项目出现了503 ,查看日志发现如下内容: System.Exception: Request api/blogpost/zzkDocs ...

  3. nowcoder2018年全国多校算法寒假训练营练习比赛(第一场)

    [气死我了 写完了博客发布 点看来一看怎么只剩下一半不到的内容了!!!!!!!!!!] [就把卡的那两道放上来好了 其余的不弄了 生气!!!!!] 可以说是很久没有打比赛了 今天这一场主要是  基础算 ...

  4. TOP100summit:【分享实录】爆炸式增长的斗鱼架构平台的演进

    本篇文章内容来自2016年TOP100summit斗鱼数据平台部总监吴瑞城的案例分享. 编辑:Cynthia 吴瑞诚:斗鱼数据平台部总监 曾先后就职于淘宝.一号店. 从0到1搭建公司大数据平台.平台规 ...

  5. HDU 1542 - Atlantis - [线段树+扫描线]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  6. HDU 6318 - Swaps and Inversions - [离散化+树状数组求逆序数][杭电2018多校赛2]

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=6318 Problem Description Long long ago, there was an ...

  7. proxychains

    有时候需要连接某机器,但是直接连被屏蔽了,虽然可以用代理来搞定一些应用程序,但是很多程序不支持代理,或者只支持某些类型的代理,这时候就可以试一试 proxychains 这个软件了. 最近用各种脚本下 ...

  8. Xcode 9运行h d f报错

    SocialSDKXib/UMSCommentInputController.xib: error: Illegal Configuration: Compiling IB documents for ...

  9. 2015 湘潭大学程序设计比赛(Internet)--D题-最小的数

    最小的数 Accepted : 47   Submit : 276 Time Limit : 1000 MS   Memory Limit : 65536 KB 题目描述 给你一个n位数,每次操作可以 ...

  10. eclipse导出doc帮助文档字符编码设置