MySQL03-权限管理和变量
1.MySQL常用命令-用户管理
- 创建用户。
create user test identified by '123456'; -- 创建test用户,密码为123456。
-- 创建一个test01用户,主机是localhost,密码使用mysql_native_password插件加密
create user `test01`@`localhost` identified with mysql_native_password by '123456';
- 修改用户名。
rename user test to test01; -- 修改test用户的用户名为test01
- 修改用户密码。
set password = 'root'; -- 修改当前用户的密码为root,保存的密码会对root进行加密。
set password for test01 = '123456'; -- 修改test01用户的密码为123456
- 删除用户。
drop user test01 -- 删除test01用户
- 查看用户。
select user(); -- 查看当前登录用户。
select * from mysql.user where User = 'root'; -- 查看root用户的信息
2.MySQL常用命令-权限管理
- 添加权限。
-- 为test01@localhost用户添加所用的权限。
-- all privileges,所有权限;*.*,所有库的的所有表,库.表
-- all privileges,会分配所有权限;但是不会分配 grant权限,grant给其他用户分配权限的权限。
grant all privileges on *.* to test01@localhost;
-- 给test02@localhost用户分配test数据库中所有表的查询权限。
grant select on test.* to test02@localhost;
- 查看用户的权限。
show grants for test01@localhost; -- 查看test01@localhost用户的权限
- 撤销权限。
revoke all privileges on *.* from test01@localhost; -- 撤销test01@localhost用户的所有权限
- 刷新权限。
flush privileges;
3.MySQL常用命令-数据库备份和恢复
- 数据备份。
-- 备份test02数据库,通过gzip压缩后,备份到a.sql中。
mysqldump -hlocalhost -P3306 -uroot -p123456 -B test02 | gzip > d:/a.sql
mysql -h 127.0.0.1 -u root -P 3306 -p'123456' -e "select * from user where id > 10" > /tmp/user.sql
- 数据恢复。
- 没有登录的导入。需要先有test02数据库,然后执行mysql -uroot -p123456 test02 < d:/a.sql。
- 登录之后的导入。先use test02切换数据库,然后执行source d:\a.sql。
4.数据库设计-三大范式
- 第一范式确保列的原子性,即每一列都是一个最小的单元,不能在进行拆分。
- 第二范式确保一张表只保存一种信息,不能保存其他无关的信息。同时第二范式,在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。
- 第三范式,其他列不能传递依赖于主键列,即表中的列应该直接依赖于主键列,而不是间接依赖于主键列。
- 在某些情况中可能会为了提高查询而违反三大范式。如给表中插入冗余的字段来,来使得原来的多表查询变为单表查询。
- 一般情况下为了保证性能,联合查询的表不能超过3张。
5.变量-变量的分类
- 系统变量。系统变量分为全局变量和会话变量。
- 全局变量。全局变量一旦修改,在整个系统的运行过程中都有效,系统重启,全局变量恢复默认值。
- 会话变量。针对当前连接会话有效。
- 自定义变量。自定义变量分为用户变量和局部变量。
- 用户变量。用户变量的作用域为当前会话。
- 局部变量。局部变量一般使用在函数或者存储过程中。
6.变量-变量的使用
- 用户变量的声明和初始化。
set @a01='aa01';
set @a02:='aa02';
select @a03:='aa03';
- 用户变量的修改。
set @a01='aa01';
set @a02:='aa02';
select @a03:='aa03';
-- 将tb_student表的查询结果输出到@a05
select count(*) into @a05 from tb_student;
- 变量的查询。
select @a01;
- 局部变量的声明和初始化。
declare n int;
declare m int default 1;
- 局部变量的赋值。
-- 局部变量的修改和用户变量一样,但是不需要使用@符号。
set a01='aa01';
set a02:='aa02';
select a03:='aa03';
select count(*) into a05 from tb_student;
- 局部变量的使用。
select a01;
7.MySQL常用命令-操作变量
- 变量名的查询。
show global variables; -- 查看所有系统变量
show session variables; -- 查看所有会话变量
show global variables like '%char%'; -- 模糊查询系统变量。
- 变量值的查询。
select @@global.character_set_client;
select @@autocommit; -- 查询事务自动提交是否开启
- 修改变量的值。
set global character_set_client = utf8mb4;
set @@global.character_set_client = utf8;
set @@global.autocommit=0;
set autocommit = 0; -- 推荐使用