ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL介绍和安装

2021-09-23 13:05:40  阅读:194  来源: 互联网

标签:5.7 安装 app MySQL 介绍 mysql root localhost


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)
    

标签:5.7,安装,app,MySQL,介绍,mysql,root,localhost
来源: https://blog.csdn.net/hawava/article/details/120421073

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有