权限管理:
use mysql
添加用户,允许这些ip下的用户通过指定的用户名和密码访问
create user '用户名' @ “ip ” identified ‘密码’ 其中,ip是可以使用模糊来指定一批地址的
删除用户 drop user '用户名' @ “ip ”
授权 grant select,insert,uqdate on 库名.表名 to '用户名' @ “ip ” ;
删权 revoke all on 库名.表名 from '用户名' @ “ip ” ;
权限的修改之后,都需要flush privileges;来刷新一下
修改用户 rename user ‘用户名’@‘ip地址’ to ‘新用户名’@‘新ip地址’
修改密码 set password for ‘用户名’@‘ip地址’=(‘新密码’);
数据库备份:
备份数据库:mysqudump -h ip... -p 3306 -u ... -p ... 库名 > 文件路径 此时得到的是创建这个数据库的所有语句,被称为逻辑备份
恢复数据库:先创建同名要恢复的库,然后mysqudump -h ip... -p 3306 -u ... -p ... 库名 < 文件路径,即改变箭头方向即可
不创建的话,在备份库名前加一个‘-B’,恢复的时候不需要再建,也不加库名
分表,分库备份:shell 循环库名或表名
增量备份:通过bin-log日志实现。主库操作,通过备份和增量复制到从库,主从备份;读写分离,写数据都写入主库,读数据都只能读取从库。
数据高可用:
主库宕机后,自动开启从库,承接线上对应的内容和程序
同时监测两个库的运行
集群:
对数据分组做取余处理,根据余数进行分配,到不同的服务器中。这一组构架成为集群。
视图:
create view 试图名 as select * from course;
生成一个相同数据内容的虚拟库,可以把多个表的数据组合在一起,避免多需重复操作。
视图的修改可能会对多个联合的表产生复杂的影响,且效率低。不建议使用。
触发器:
在进行某些sql语句操作时,使其能够自动触发一些动作。
创建触发器:
需先声明语句结束符,结束后改回‘‘;’’
delimiter // #这里的是改结束符,改成什么符号都可以
create tigger cmd_tri after insert on cmd for each row//
begin
if new .字段 = ‘no’ then
insert into 表名(字段名1,字段名2)values (new.字段1,new.字段2);
end if;
end//
delimiter; # 这里的是把结束符改回原来的;
可以通过记录错误状态触发系列操作,保存错误项和时间形成错误日志
删除触发器:
drop tigger 触发器名;
事务:
多个sql语句捆绑在一起执行,进行一个原子操作,全部执行生效才可以,有一句错误就都全部回滚。
start transaction;
update user set balance=900 where name='wsb'; #买支付100元
update user set balance=1010 where name='chao'; #中介拿走10元
uppdate user set balance=1090 where name='ysb'; #卖家拿到90元,出现异常没有拿到操作
rollback; #如果上面三个sql语句出现了异常,就直接rollback,数据就直接回到原来的状态了。
commit; #只要不进行commit,数据就没有保存硬盘上。执行了commit之后就没有办法rollback了。
存储过程:
在存储过程了写复杂的sql语句,放在服务端,开发者使用相关功能的时候进行调用即可,效率高
创造存储过程(无参):
delimiter //
create PROCEDURE p5() --存储过程名
BEGIN
sql语句;
END //
delimiter ;
执行完之后,使用call p1(),则会执行一次内部的sql语句。
删除存储过程:
drop produre 存储过程名;
创造存储过程(有参):
三种,输入有参数,输出有参数,输入输出都有参数
输入参数:
p2(
in 参数名
)