MySQL介绍和安装

2021/9/23 19:43:10

本文主要是介绍MySQL介绍和安装,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MySQL介绍

基本概念

数据库(database):数据库是一个以某种有组织的方式存储的数据集合,是保存有组织的数据的容器。适合存储到数据库的数据:

  • 重要性比较高的数据
  • 关系较为复杂的数据

数据库管理系统(DBMS):数据库管理系统是管理数据库的软件,数据库通过DBMS创建和操纵容器。DBMS在行业中分为两个派系:

  • RDBMS(Relational Database Management System):关系型数据库管理系统,比较适合于安全级别要求高的数据以及关系较复杂的数据,包括MySQL、Oracle、MsSQL(SQL Server)等
  • NoSQL(Not only SQL):非关系型数据库管理系统,适合高性能存储数据,可配合RDBMS进行使用;也可针对大数据处理分析和分布式架构,包括:
    键值(Key-Value):Redis、memcached
    文档(document):mongodb

MySQL简介

企业版本选择(MySQL分支版本):

  • Oracle:MySQL官方版(InnoDB存储引擎、MGR、InnoDB Cluster)
  • Redhat:MariaDB(Xtradb、Zabbix(TokuDB引擎、MyRocks引擎)、Xtradb cluster)
  • Percona:PerconaDB,建议使用它提供的工具percona toolkit,XBK(xtrabackup),PXC

MySQ行业主流版本, 版本选择建议要上新环境,一般选择官方主流版本5.6、5.7–GA(稳定发布版),6-12月的产品版本:

  • MySQL 5.6:5.6.20、5.6.34、5.6.36、5.6.38、5.6.40
  • MySQL 5.7:5.7.18、5.7.20、5.7.22
  • MySQL 8.x

本次使用MySQL 5.7.20版本(Sep 13,2017)进行学习。

MySQL安装

主要提供三种格式的MySQL包的安装:

  • 源码格式:source code,程序压写的码
  • 二进制格式:binary code,由源码经过编译得到,机器跑的码
  • RPM格式:分为binary rpm和source rpm
安装方式包名举例包名含义介绍
二进制包mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz软件名<版本>-<CPU架构>.tar.gz二进制包包含了已经过编译,可以马上运行的程序
源码包mysql-5.7.20.tar.gz软件名<版本>.tar.gz源代码包里面包括了程序原始的程序代码,需要在计算机上进行编译以后才可以产生可以运行程序,所以从源代码安装的时间会比较长。
RPM包MySQL-server-5.7.20-1.el6.x86_64.rpm软件件名<版本><CPU架构>.rpmRPM是redhat系列发行版本所用的格式软件包,可使用rpm -ivh安装。yum安装其实就是自动判断rpm包的依赖,一次性把所有需要安装的rpm统一下载安装,其原理和一个个的安装rpm没有本质区别。

MySQL源码安装

  1. 官网下载source code源码包

    wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
    
  2. 解压并重命名目录

    tar xf mysql-boost-5.7.20.tar.gz
    mv mysql-boost-5.7.20 mysql
    
  3. 安装依赖包

    yum -y install gcc gcc-c++ make cmake ncurses ncurses-devel perl boost boost-doc boost-devel
    
  4. 创建关键用户及目录

    mkdir -p /usr/local/mysql
    mkdir -p /usr/local/mysql/data
    useradd mysql
    chown -R mysql.mysql /usr/local/*
    
  5. cmake进行预编译

    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/\ 
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql \
    -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost
    
  6. 编译安装

    make && make install
    

MySQL二进制安装

  1. 官网下载MySQL 5.7.20 二进制包

    [root@localhost app]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
    
  2. 解压并重命名目录

    [root@localhost app]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
    [root@localhost app]# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql
    [root@localhost app]# ls
    mysql
    [root@localhost app]# ll mysql/
    total 36
    drwxr-xr-x.  2 root root   4096 Sep 23 11:43 bin
    -rw-r--r--.  1 7161 31415 17987 Sep 13  2017 COPYING
    drwxr-xr-x.  2 root root     55 Sep 23 11:43 docs
    drwxr-xr-x.  3 root root   4096 Sep 23 11:43 include
    drwxr-xr-x.  5 root root    229 Sep 23 11:43 lib
    drwxr-xr-x.  4 root root     30 Sep 23 11:43 man
    -rw-r--r--.  1 7161 31415  2478 Sep 13  2017 README
    drwxr-xr-x. 28 root root   4096 Sep 23 11:43 share
    drwxr-xr-x.  2 root root     90 Sep 23 11:43 support-files
    
  3. 将bin目录添加到环境变量中

    [root@localhost app]# vim /etc/profile
    export PATH=/app/mysql/bin:$PATH
    [root@localhost app]# source /etc/profile
    
  4. 创建mysql用户和组,并修改mysql目录权限

    [root@localhost app]# useradd -M -s /sbin/nologin mysql
    [root@localhost app]# chown -R mysql.mysql /app/mysql
    [root@localhost app]# mkdir -p /data/mysql     
    [root@localhost app]# chown -R mysql.mysql /data/mysql
    
  5. 初始化数据(建库)
    一套完整的数据库管理系统的基本结构

    • 软件部分:/app/mysql
    • 数据部分:系统相关数据(维持mysql数据库软件程序,正常运行的系统数据)、用户数据(与用户应用程序相关的数据)
    方法一:初始化数据,初始化管理员的临时密码
    [root@localhost app]# mysqld --initialize  --user=mysql --basedir=/app/mysql --datadir=/data/mysql
    ...
    2021-09-23T04:05:57.310710Z 1 [Note] A temporary password is generated for root@localhost: 1:hl_c2z1bS<
    
    方法二:初始化数据,初始化管理员的密码为空
    [root@localhost app]# mysqld --initialize-insecure  --user=mysql --basedir=/app/mysql --datadir=/data/mysql
    
    --initialize:初始化数据
    --user:数据库管理员
    --basedir:数据库软件放置位置
    --datadir:数据库数据放置位置
    
    [root@localhost app]# cd /data/mysql/
    [root@localhost mysql]# ls
    auto.cnf  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys
    

    扩展:5.6初始化区别

    /app/mysql/scripts/mysql_install_db  --user=mysql --datadir=/app/mysql/data --basedir=/app/mysql
    

    重要说明:5.7开始,MySQL加入全新的密码安全机制(加入insecure后关闭该机制)

    1. 初始化完成后,会生成临时密码(显示到屏幕,日志也有记录)
    2. 密码复杂度要求:长度超过12位,字符混合
    3. 密码过期时间180天
  6. 编辑MySQL配置文件/etc/my.cnf(应该默认为空,若有内容表示maraidb没有卸载干净)

    [root@localhost ~]# vim /etc/my.cnf
    [mysqld]
    user=mysql
    basedir=/app/mysql
    datadir=/data/mysql
    server_id=6
    port=3306
    socket=/tmp/mysql.sock
    
    [mysql]
    socket=/tmp/mysql.sock
    prompt=3306 [\\d]>
    
  7. 配置启动脚本

    [root@localhost mysql]# cd /app/mysql/support-files
    [root@localhost support-files]# ./mysql.server start
    Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'.
    . SUCCESS!
    
    将启动脚本复制到/etc/init.d/下
    [root@localhost support-files]# cp mysql.server    /etc/init.d/mysqld
    而后就可以通过service进行管理
    [root@localhost ~]# service mysqld stop
    Shutting down MySQL.. SUCCESS! 
    
  8. 使用systemd管理mysql

    [root@localhost ~]# vim /etc/systemd/system/mysqld.service
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    LimitNOFILE = 5000
    

    注意:若mysqld处于启动状态先将其关闭,然后再使用systemd管理。

    [root@localhost ~]# service mysqld stop
    Shutting down MySQL.. SUCCESS! 
    
    [root@localhost ~]# systemctl start mysqld
    
  9. 安装后的简单管理

    # 修改mysql root密码
    [root@localhost ~]# mysqladmin -uroot -p password 123456
    Enter password: 
    mysqladmin: [Warning] Using a password on the command line interface can be insecure.
    Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
    # MySQL登录测试
    [root@localhost ~]# mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    

    查看数据库中的用户密码等信息

    5.6版本
    select user,password,host from mysql.user;

    5.7版本
    select user,authentication_string,host from mysql.user;

    3306 [(none)]>select user,authentication_string,host from mysql.user;
    +---------------+-------------------------------------------+-----------+
    | user          | authentication_string                     | host      |
    +---------------+-------------------------------------------+-----------+
    | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
    | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
    | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
    +---------------+-------------------------------------------+-----------+
    3 rows in set (0.00 sec)
    


这篇关于MySQL介绍和安装的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程