- 1.锁
1.目的:解决客户端并发访问的冲突问题
2.锁的分类
1.锁的类型
1.读锁(共享锁)
查询(select):加读锁之后,别人不能更改表记录,但是可以进行查询
2.写锁(互斥锁,排他锁)
更新(update):加写锁之后,别人不能查,不能改
2.锁粒度
1.行级锁: Innodb
select :加读锁,锁1行
update :加写锁,锁1行
2.表级锁:MyISAM
select 加读锁,锁1张表 只能查不能写
update 加写锁,锁1张表 不能写不能查
- 2.存储引擎(engin : 处理表的处理器)
1.查看所有的存储引擎
show engines;
2.查看已有表的存储引擎
show create table 表名;
3.创建表指定存储引擎
create table 表名(...)engine = myisam,charset=utf8;
4.已有表
alter table 表名 engine=myisam;
常用存储引擎的特点
1.InnoDB特点
1.支持事务,外键,行级锁
2.共享表空间
表名.frm:表结构和索引文件
表名.ibd:所有的表记录
2.MyISAM特点
1.支持表级锁
2.独享表空间
表名.frm:表结构
表名.MYD:表记录 mydata
表名.MYI:索引信息 myindex
3.Momory存储引擎
1.数据存储在内存里,速度快
2.服务器重启,mysql服务重启后表记录消失
如何决定使用哪个存储引擎
1.执行查询操作多的表使用MyISAM(使用InnoDB浪费资源)
2.执行写操作多的表使用InnoDB
- 3.MySQL用户账户管理
1.开启MySQL远程连接
1.sudo -i
2.cd /etc/mysql/mysql.conf.d/
3.cp mysqld.cnf mysqld.cnf.bak2
4.vi mysqld.cnf
#bind-address=127.0.0.1
5./etc/init.d/mysql restart
2.用root用户添加授权用户
1.用root用户登录mysql
mysql -uroot -p123456
2.授权
grant 权限列表 on 库名.表名
to '用户名'@'%'identified by'密码'
with grant option;
权限列表:all privileges,select,update
库名.表名:db4.*,*.*(所有库的所有表)
3.例子
1.添加授权用户tiger,密码123,对所有库的所有表有所有的权限,可从任何ip去连接
grant all privileges on *.*
to 'tiger'@'%'
identified by '123'
with grant option;
2.添加授权用户rabbit,密码123,对db4库所有表只有查询权限,可从任何ip去连接
grant select on db4.*
to 'rabblt'@'%'
identified by '123'
with grant option;