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. confirm

    注意confirm是window对象的方法,当确认时,返回true,取消时,返回false

  2. Pycharm中如何使用科学计算库

    1.简便起见 比起麻烦的安装各种库,我们选择最方便的Anaconda的conda或pip(兼容支持)安装相关库. Pycharm本身缺少numpy和matplotlib这些库,而另一个Python的开 ...

  3. CNN中的卷积理解和实例

    卷积操作是使用一个二维卷积核在在批处理的图片中进行扫描,具体的操作是在每一张图片上采用合适的窗口大小在图片的每一个通道上进行扫描. 权衡因素:在不同的通道和不同的卷积核之间进行权衡 在tensorfl ...

  4. Python:lambda表达式(匿名函数)

    lambda表达式: 通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中 ...

  5. Recv-Q&Send-Q

    最近线上某些服务器老是报cpu load高,同机房其他机器却没有问题.排查发现以下异常 ss -nl Recv-Q Send-Q                 Local Address:Port ...

  6. m4a 转 wav

    https://blog.csdn.net/zjm750617105/article/details/80148473 sox 不行, ffmpeg 很麻烦, 考虑用 avconv 很简单: 安装: ...

  7. Cable master---poj1064(二分|卡精度)

    题目链接:http://poj.org/problem?id=1064 题意:有n条绳子,长度为Li,现在从这n条绳子中切割出K条相等的绳子,问切割出来的这k条绳子的最大长度为多少: 二分判断即可: ...

  8. Frogger--poj2253

    http://poj.org/problem?id=2253 题意:The frog distance (humans also call it minimax distance) between t ...

  9. Python命令行解析库argparse(转)

    原文:http://www.cnblogs.com/linxiyue/p/3908623.html 2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse ...

  10. CentOS 6 网络设置

    系统配置: 系统硬件:vmware workstation 系统版本:Centos-6.6-x86_64 路由器网关:192.168.1.1 linux系统网络设置须知: 1.主机所有网卡信息配置文件 ...