学习Linux个人笔记:MySQL-介绍、安装、体系结构

一、数据库介绍

1.什么是数据?

咱们认为的数据:
文字、数字、符号、表格、图片、视频…
计算机认为的数据:
二进制(机器语言)

2.数据库管理系统(软件DBMS)
  • 数据库的发展历程
  1. 第一时代架构 : RDBMS时代
    什么是RDBMS?
    关系型数据库关系系统:Oracle 、 MSSQL 、 IBM DB2

  2. 第二时代架构: RDBMS(MySQL、PG、云数据库) + NoSQL(Not ONLY SQL)时代
    数据量、业务量随着互联网的发展,变的越来越大。所以传统的RDBMS已经不能承载所有业务需求了。
    NoSQL :MongoDB 、ES 、Redis

  3. 第三时代架构:
    NewSQL 分布式数据库时代
    Aliyun: PolarDB
    Pincap: TiDB

  • 面试题
    请你介绍以下你熟悉的数据库产品?
    RDBMS : 关系型 Oracle 、MySQL、MSSQL、PG、DB2
    NoSQL : 非关系型 MongoDB 、ES 、Redis
    云产品: RDS 、 TDSQL
    NewSQL: polarDB 、TiDB

    你们公司都用了什么数据库产品?
    注意: 一般用了云产品的话,很少自建数据库。
    我们建议:
    RDBMS : 关系型 Oracle 、MySQL、MSSQL、PG、DB2 (最多两种)
    NoSQL : 非关系型 MongoDB 、ES 、Redis (一般互联网公司都有)

二、MySQL介绍和安装

1. MySQL产品线
  • 分支
    Oracle
    MariaDB
    Percona
2.MySQL企业版本选择
  • 分支
    E : 企业版 (收费),可以下载30天试用
    C : 社区版 (开源)

  • 社区版选择
    免费服务期限: 1-5年
    扩展服务期限: 6-10年

5.7 :一般建议升级到最新版本,5.7.18-5.7.30 最好是双数版。
5.6 :一般建议选用GA6-12月区间,5.6.34-max,最好是双数版本。
8.0 :一般建议使用8.0.18+

  • 获取数据库软件
    https://downloads.mysql.com/archives/community/
3.安装MySQL 5.7.28二进制版本
  • 克隆虚拟机
    IP: 10.0.0.51/24
    hostname: db01
    防火墙关闭
    selinux关闭

  • 清理历史环境

yum remove -y mariadb-libs 
\rm -rf /etc/my.cnf* 
  • 创建用户
useradd mysql 
  • 创建相关目录并授权
mkdir -p /data/app /data/3306/data /data/3306/logs 
chown -R mysql.mysql /data 
  • 上传 5.7.28 软件至/data/app,并解压、软连接
[root@db01 ~]# cd /data/app
[root@db01 app]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@db01 app]# ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql
  • 设置环境变量
vim /etc/profile 
#添加最后一行
export PATH=/data/app/mysql/bin:$PATH 

#生效配置:
source /etc/profile 
  • 安装关键依赖软件包
yum install -y libaio-devel 
  • 初始化数据(建库)
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data 
命令作用: 
将数据启动所需要的系统数据(/data/3306/data)

	参数介绍: 
	--initialize-insecure 			初始化核心参数(必加)
	--user=mysql           			初始化用户和组
	--basedir=/data/app/mysql       	软件安装目录
	--datadir=/data/3306/data       	数据存放位置
  • 准备启动脚本
[root@db01 data]# cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysqld
  • 准备配置文件
[root@db01 data]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
  • 启动数据库
[root@db01 data]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS! 

[root@db01 data]# service mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
  • 使用systemd管理mysql
[root@db01 data]# chkconfig --add mysqld
[root@db01 data]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
[root@db01 data]# systemctl start mysqld
[root@db01 data]# mysql
[root@db01 data]# ps -ef |grep mysqld
root      17275      1  0 16:00 ?        00:00:00 /bin/sh /data/app/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/db01.pid
mysql     17416  17275  4 16:00 ?        00:00:00 /data/app/mysql/bin/mysqld --basedir=/data/app/mysql --datadir=/data/3306/data --plugin-dir=/data/app/mysql/lib/plugin --user=mysql --log-error=db01.err --pid-file=/data/3306/data/db01.pid --socket=/tmp/mysql.sock
root      17448  16288  0 16:00 pts/1    00:00:00 grep --color=auto mysqld
[root@db01 data]# netstat -tulnp |grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      17416/mysqld        
[root@db01 data]# systemctl stop  mysqld
[root@db01 data]# netstat -tulnp |grep 3306
  • 基于initialize模式,修改临时密码
[root@db01 data]# mysqladmin -uroot -p password 123
Enter password: 

三、MySQL基础管理

1.用户的管理
  • 查询
mysql> select user,host,authentication_string ,plugin  from mysql.user;
+---------------+-----------+-------------------------------------------+-----------------------+
| user          | host      | authentication_string                     | plugin                |
+---------------+-----------+-------------------------------------------+-----------------------+
| root          | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | mysql_native_password |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
+---------------+-----------+-------------------------------------------+-----------------------+
3 rows in set (0.00 sec)

#如果记不住单词,可以执行以下命令
mysql> desc mysql.user;
  • 创建
mysql> alter user oldguo@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,authentication_string ,plugin  from mysql.user;
+---------------+-----------+-------------------------------------------+-----------------------+
| user          | host      | authentication_string                     | plugin                |
+---------------+-----------+-------------------------------------------+-----------------------+
| root          | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | mysql_native_password |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| oldguo        | 10.0.0.%  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password |
+---------------+-----------+-------------------------------------------+-----------------------+
4 rows in set (0.00 sec)
  • 删除用户
mysql> drop user oldguo@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,authentication_string ,plugin  from mysql.user;
+---------------+-----------+-------------------------------------------+-----------------------+
| user          | host      | authentication_string                     | plugin                |
+---------------+-----------+-------------------------------------------+-----------------------+
| root          | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | mysql_native_password |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
+---------------+-----------+-------------------------------------------+-----------------------+
3 rows in set (0.00 sec)
2.权限管理
  • 作用
    控制用户,能够对数据库对象做哪些操作

  • 定义方式
    命令即权限

mysql> show privileges;  			#查看MySQL中的权限列表
 Alter                  
 Alter routine          
 Create                 
 Create routine         
 Create temporary tables
 Create view            
 Create user            
 Delete                 
 Drop                   
 Event                  
 Execute                
 File                   
 Grant option           
 Index                  
 Insert                 
 Lock tables            
 Process                
 Proxy                  
 References             
 Reload                 
 Replication client     
 Replication slave      
 Select                 
 Show databases         
 Show view              
 Shutdown               
 Super                  
 Trigger                
 Create tablespace      
 Update                 
 Usage

说明:
特殊的权限ALL:代表了以上所有权限结合,除了Grant option(给别人授权的功能)。
一般管理员用户会具备ALL,其他普通用户按需提供相应权限,一般DROP种类的权限不会给普通用户。

  • 权限管理
    MySQL中权限是属于用户的属性。
#权限查询
mysql> show grants for root@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
  • 授权
    GRANT 权限 ON 作用范围 TO 用户 IDENTIFIED BY ‘密码’;

    作用范围 ?
    . : 全局范围 chmod -R /
    wordpress.* : 单库范围 chmod -R /wordpress
    wordpress.t1:单表范围 chmod -R /wordpress/a.txt

    管理员用户授权:

mysql> grant all on *.* to oldboy@'10.0.0.%' identified by '123';

普通用户授权:

mysql> grant select,update,delete,insert   on test.* to test@'10.0.0.%' idenfied by '123';
  • 回收
    注意: 不能通过重复授权修改权限,因为授权都是相加的关系。
mysql> revoke delete on test.*  from 'test'@'10.0.0.%';
3.MySQL链接管理
  • 自带客户端命令

      #mysql 命令的使用
      -u    用户名
      -p    密码
      -S    Socket文件
      -h    IP地址 
      -P    端口号
      -e    免交互执行命令
      <     导入SQL脚本
    
  • IP地址连接串 (tcpip连接方法)
    IP Port user passwd
    mysql -u用户 -p密码 -h地址 -P端口
    前提:

    1. IP和端口正确的。
    2. 提前创建好可以远程登录的用户
[root@db01 data]# mysql -uoldboy -p123 -h10.0.0.51 -P3306
[root@db01 data]# mysql -uoldboy -p123 -h10.0.0.51 

你可能感兴趣的:(学习Linux个人笔记:MySQL-介绍、安装、体系结构)