mysql 视图开启授权

mysql 视图相关操作

操作指令 代码
创建视图 CREATE VIEW 视图名(列1,列2…) AS SELECT (列1,列2…) FROM …;
使用视图 和普通表一样操作
修改视图 CREATE OR REPLACE VIEW 视图名 AS SELECT […] FROM […];
删除视图 DROP VIEW 视图名
查看数据库已有视图 SHOW TABLES [like…];(可以使用模糊查找)
查看视图详情 DESC 视图名或者SHOW FIELDS FROM 视图名
视图条件限制 [WITH CHECK OPTION]

操作指令 代码
创建登录账户 CREATE USER ‘用户名’ @‘IP/localhost’ IDENTIFIED BY ‘密码’;
授权 GRANT 权限 ON 数据库名.表 TO ‘用户名’ @‘IP/localhost’;
查看所有账户 SELECT USER,HOST FROM mysql.USER
查看账户权限 SHOW GRANTS FOR ‘用户名’ @‘IP/localhost’
  • 创建视图
CREATE VIEW v_em ( emp_no, first_name, birth_date, last_name, gender, hire_date, dept_no, dept_name, from_date, to_date ) AS SELECT
e.emp_no,
e.first_name,
e.birth_date,
e.last_name,
e.gender,
e.hire_date,
d.dept_no,
d.dept_name,
de.from_date,
de.to_date 
FROM
	employees e
	LEFT JOIN dept_emp de ON de.emp_no = e.emp_no
	LEFT JOIN departments d ON d.dept_no = de.dept_no;
  • 使用视图
SELECT
	* 
FROM
	v_em ve 
WHERE
	ve.emp_no = 10002
  • 修改视图
CREATE 
	OR REPLACE VIEW v_em AS SELECT
	emp_no 
FROM
	employees;
  • 删除视图
DROP VIEW v_dept
  • 查看数据库已有视图
SHOW TABLES LIKE '%em%';
  • 查看视图详情
DESC v_em;

SHOW FIELDS FROM v_em;
  • 视图条件限制
CREATE VIEW v_dept AS SELECT
* 
FROM
	departments 
WHERE
	dept_no >= 1000 WITH CHECK OPTION;
	
INSERT INTO v_dept(dept_no,dept_name) VALUES(100,"测试");
> CHECK OPTION failed 'testmysql.v_dept'
  • 视图开启权限
创建登录账户:
CREATE USER 'test'@'localhost' IDENTIFIED by 'test';

查看所有账户:
SELECT USER,HOST FROM mysql.USER

授权(只读):
GRANT SELECT ON testmysql.v_em TO 'test' @'localhost';
刷新(授权后需要刷新后生效):
FLUSH PRIVILEGES;

查看账户权限:
SHOW GRANTS FOR test @localhost

删除账户:
DROP USER 'test' @'%'

猜你喜欢

转载自blog.csdn.net/qq_35494808/article/details/89844590