MySQL体系结构和存储引擎

MySQL被设计成为一个可移植的数据库,可移植性就是代码可以在多个系统中运行。
MySQL各系统平台在底层实现方面都各有不同,但是MySQL能保证在各平台上的物理体系结构的 一致性。
MySQL被设计成一个单进程多线程架构的数据库,与SQL Server类似,与Oracle多进程的架构不用(Wins的Oracle也是单进程多线程的结构)。

数据库和数据库实例

数据库:
定义: 物理操作系统文件或者其他形式文件类型的集合,数据库是文件的集合,是按照某种数据模型组织起来并存放于二级存储器中的数据集合。
类型:MySQL数据库中,数据库类型文件可以是frm,MYD,ibd,MYI结尾的文件。
使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存在于内存之中。
数据库实例:
MySQL数据库由后台程序以及一个共享内存区域组成的。
数据库实例是程序,是位于用户和操作系统中的一层数据管理软件,
用户需要通过数据库实例,才能操作数据库文件。

MySQL数据库实例在系统上表现为一个进程。

  1. 在Linux下安装数据库

    centos7安装Mysql5.7

  2. 更新yum工具

    1. yum update -y
  3. 安装wget工具

    1. cd /安装目录
    2. sudo yum install -y wget
  4. 使用wget下载mysql yum源

    1. wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
  5. 添加mysql yum源:

    1. sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm -y
  6. 安装yum工具 yum-utils:

    1. sudo yum install -y yum-utils
  7. 查看可用的mysql

    1. yum repolist enabled | grep "mysql.*-community.*"
  8. 查看所有的mysql版本

    1. yum repolist all | grep mysql
  9. 使用指定版本的mysql

  • 关闭mysql8.0

    1. sudo yum-config-manager --disable mysql80-community
  • 开启mysql5.7

    1. sudo yum-config-manager --enable mysql57-community
  1. 查看当前启用的mysql版本

    1. yum repolist enabled | grep mysql
  2. 安装mysql

    1. sudo yum install -y mysql-community-server
  3. 启动MySQL

    1. # 启动Mysql
    2. sudo service mysqld start
    3. # 查看Mysql服务无状态
    4. sudo service mysqld status
  • 报错 Redirecting to /bin/systemctl start mysqld.service
  • 原因推测:service mysql start 是重定向到/bin/systemctl restart mysql.service. mysql与mysqld是不同的,前者交互式命令(客户端),mysqld才是后端服务进程,可能是启错了
    1. systemctl start mysqld.service
    2. systemctl status mysqld
    3. systemctl restart mysqld.service
  1. 初始化Mysql
    1. # 查看初始化的密码
    2. sudo grep 'temporary password' /var/log/mysqld.log
    3. # 使用初始化密码进行登录
    4. mysql -u root -p
    5. # 初始化密码
    6. ALTER USER 'root'@'localhost' IDENTIFIED BY 'daasan7ujm^YHN';
    7. # 查询Mysql初始化密码的制定策略
    8. SHOW VARIABLES LIKE 'validate_password%';
    9. # 修改密码验证强度
    10. set global validate_password_policy=LOW;
    11. # 修改密码的长度
    12. set global validate_password_length=6;
    13. # 重新设置简单密码
    14. ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
  1. 启动Mysql实例子

    1. ./mysqld_safe&
  2. ps观察mysql是数据库启动后的进程情况:

    1. ps -ef | grep mysqld
    2. # root 61537 58828 0 22:25 pts/0 00:00:00 grep --color=auto mysqld
    3. # 61537 就是进程号码

  3. 数据库实例: # ./mysqld_safe&

ps观察MySQL数据库启动后的进程情况: #ps-ef|\grep mysqld

  1. MySQL体系结构

4