简介
安装与配置
安装
- 执行安装命令
yum install mysql-server -y
启动
- 使用 systemctl 启动
systemctl start mysqld.service
- 使用 service 启动
service mysqld start
- 使用 mysqld 脚本启动
/etc/inint.d/mysqld start
停止
- 使用 service 停止
service mysqld stop
- 使用 mysqld 脚本停止
/etc/inint.d/mysqld stop
重启
- 使用 service 重启
service mysqld restart
- 使用 mysqld 脚本重启
/etc/inint.d/mysqld restart
设置开机启动
- 如果默认mysql是自启动的,不用进行本操作
systemctl enable mysqld
systemctl daemon-reload
打开远程访问
update user set host=’%’ where user=’root’
用户与权限
初次登录
- 无密码直接登录;
- 查询启动日志里面有初始密码
mysql -u root -p
目录配置
快速将默认目录迁移至于数据盘
- 停止MySQL服务
systemctl stop mysqld.service
- 确认服务停止
systemctl stauts mysqld.service
- 将默认目录迁移至数据盘
mv /var/lib/mysql/ /data/
- 目录软连接至数据盘目录
ln -s /data/mysql /var/lib/
单独配置数据目录
- 打开配置文件(目录地址需要根据安装方式确定)
vim /etc/my.cnf.d/mysql-server.cnf
- 修改配置参数
1
2
3datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysqld.log
设置/修改密码
use mysql
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘HEUvGhgNzcCYsFXqJzKza’;
创建用户
CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
用户授权
- 授权指定表指定权限给用户
GRANT SELECT, INSERT ON test.user TO ‘username’@’%’;
- 授权所有变得所有权限给用户
GRANT ALL ON . TO ‘username’@’%’;
- 授予用户得授权权限
GRANT privileges ON databasename.tablename TO ‘username’@’host’ WITH GRANT OPTION;
- 删除用户
DROP USER ‘username’@’host’;
- 刷新授权
flush privileges;
事务与隔离级别
四种隔离级别
Read Uncommitted(读取未提交内容)
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
Read Committed(读取提交内容)
这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。
Repeatable Read(可重读)
这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。
Serializable(可串行化)
这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
数据隔离级别
查看数据隔离级别
- MySQL 5.7.20 之前
select @@tx_isolation;
- MySQL 8.0+
方式一select @@transaction_isolation;
方式二
show variables like ‘transaction_isolation’;
修改数据隔离级别
- 修改本回话隔离级别
设置本次会话的事务隔离级别,只在本会话有效,不会影响到其它会话set session transaction isolation level read committed;
- 修改全局隔离级别
设置全局的事务隔离级别,该设置不会影响当前已经连接的会话,设置完毕后,新打开的会话,将使用新设置的事务隔离级别set global transaction isolation level read committed;
- 配置文件配置隔离级别
transaction-isolation = REPEATABLE-READ