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. 7.24 IO多路复用和协程代码笔记

    1. 复习 # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018/7/23 11:49 # !@Author TrueNew ...

  2. Java工程师之Redis实战系列教程前言&目录

    系列前言 Java工程师之Redis实战系列教程,同其他教程一样,均是在下学习笔记,本系列主要参考自<Redis-in-action>,将书本中的有趣的例子转化为能解决特定问题的示例程序, ...

  3. Linq 多连接及 left join 实例 记录

    var retList = from d in mbExList.Cast<MaterialBaseEx>().ToList() join c in umcList.Cast<Cla ...

  4. Sublime Text3注册激活和部分配置

    1.  更改hosts文件(参照:sublime text3 破解方法,亲测有效) windows系统的hosts文件在C:\Windows\System32\drivers\etc在hosts文件中 ...

  5. 用PHP编写一个APP的API

    第一部分,通信接口的实现 标签(空格分隔): PHP 手机后台 api 通信接口 Andy PHP开发手机API时,一般返回XML或JSON数据类型的数据,除了要返回从源数据(程序本身需要的数据)外还 ...

  6. Excel-字符串连接

    使用函数concatenate()将多个字符连接起来

  7. 数据库bcp导入导出批处理工具

    应公司策划要求,需要一个数据库按表导入导出的工具配合svn来进行差异匹配,方便策划每天对数据库修改的记录工具,我使用bcp命令实现如下批处理工具,中间踩了不少坑,现保存在这边希望可以帮到需要此工具的同 ...

  8. 解决重启服务器以后Nginx无法启动

    今天重启服务器以后发现nginx服务器启动失败. 这应该是因为把nginx进程杀死后pid丢失了,下一次再开启nginx -s reload时无法启动,重装可以解决这个问题,但是太麻烦了. 然后这样就 ...

  9. crawlspider爬虫:定义url规则

    spider爬虫,适合meta传参的爬虫(列表页,详情页都有数据要爬取的时候) crawlspider爬虫,适合不用meta传参的爬虫 scrapy genspider -t crawl it it. ...

  10. [vue]组件最佳实战

    [vue]全局组件和局部组件(嵌套+props引用父组件数据) [vue]组件篇 [vue]组件的创建(componet)和销毁(keep-alive缓存)和父子dom同步nextTick [vue] ...