MySQL入门

简介

安装与配置

安装

  • 执行安装命令

    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
    3
    datadir=/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

Author: suce
Link: https://haoubox.cn/2021/09/19/MySQL入门/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.