关系型数据库之——MYSQL

1、DBA工做内容:html

  初级DBA:mysql

    安装配置、基本使用、基本故障处理linux

  1. MYSQL简介及部署
  2. MYSQL体系架构
  3. MYSQL基础管理
  4. SQL应用
  5. Information_schema获取元数据

  中级DBA:c++

    体系架构、备份策略设计、故障恢复、基础高可用的运维(搭建、监控、故障处理、架构演变)、web

    基础优化(索引、执行计划、慢日志)redis

  1. 索引及执行计划
  2. MYSQL存储引擎
  3. MYSQL日志管理
  4. MYSQL备份与恢复
  5. MYSQL主从复制及架构演变

  高级DBA:sql

    高可用架构(设计、实施、运维)、高性能架构(读写分离、分库、分表、分布式)、mongodb

    总体数据库优化(基于业务的SQL优化)数据库

  1. MYSQL高可用架构
  2. MYSQL高性能架构
  3. MYSQL优化
  4. MYSQL5.7及8.0高可用新特性

2、IT人员应该具有的职业素质json

我的素养

  • 人品
  • 严谨
  • 细心
  • 心态 

职业技能

  • 熟悉操做系统
  • 熟悉业务(开发)
  • 熟悉行业
  • 喜欢数据库 

 

什么是数据?

  数据是指对客观事件进行记录并能够鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。

什么是数据库管理系统?

  更好的去存数据和更好的去管理数据的软件。

数据库管理系统种类

  关系型数据库(RDBMS)------>安全

  非关系型数据库(NOSQL)------->性能

数据库产品介绍

  关系型数据库(RDBMS):Oracle Mysql mssql(SQL Server) PG(postgresql)

    都是以二维表(明确的列定义和行信息)组织存储数据

  非关系型数据库(NOSQL): redis  Mongodb  memcache ES Hbase neo4j

    键值存储、文档存储

 

  MySQL版本选择

    5.6    5.7   8.0(不建议使用)

    补充:

      选择GA版本6-12个月产品

      5.6.34     5.6.36    5.6.38    当前版本已经用了2年了,没有出现过任何因为版本问题出现的不稳定状况,并且升级是有风险的,因此暂时没有考虑升级。

      5.7.18      5.7.20         咱们公司新上的项目使用了5.7.20这个版本中的高可用架构(MGR)。

 

RDBMS和NOSQL对比:

 

 

MYSQL简介及部署

 MySQL安装方式:

  1. rpm、yum安装     安装方便、安装速度快,没法定制

  2. 二进制               不须要安装,解压便可使用,不能定制功能

  3. 编译安装

     3.1 可定制,安装慢

  •     3.2 四个步骤:
    •     3.2.1 解压(tar)
    •     3.2.2 生成(./configure)cmake
    •     3.2.3 编译(make)
    •     3.2.4 安装(make install)
    • 3.3  5.5版本以前:tar ./configure make make install
    • 3.4  5.5版本以后:cmake gmake

 

  4. 先编译,而后定制rpm包,制做yum仓库,而后yum安装

    4.1 简单,速度快,可定制,比较复杂,制做时间极长

 

  5. 企业中选择的安装方式

    5.1 中小型企业:以上方式均可以,运维偏向编译,dba偏向二进制 运维也偏向二进制

    5.2 大型企业:能够选择: 先编译而后定制rpm包,制做yum仓库,而后yum安装

#cmake
#定制功能:存储引擎、字符集、压缩
#定制安装位置、数据存放位置、文件位置(socket)
#克隆一个模板机(使用CentOS6),克隆完作快照
#IP 10.0.0.52 主机名db02
#下载5.6.36包
[root@db02 ~]# wget -q https://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
#安装epel源
[root@db02 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-6.repo
#安装依赖包
[root@db02 ~]# yum install -y ncurses-devel libaio-devel
#安装cmake
[root@db02 ~]# yum install -y cmake
#建立用户
[root@db02 ~]# useradd mysql -s /sbin/nologin -M
#修改hosts
[root@db02 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.52 db02
#解压MySQL源码包
[root@db02 tools]# tar xf mysql-5.6.36.tar.gz
#进入MySQL目录
[root@db02 tools]# cd mysql-5.6.36
#生成
[root@db02 mysql-5.6.36]#
#程序存放位置
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.38 \
#数据存放位置
-DMYSQL_DATADIR=/application/mysql-5.6.38/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.38/tmp/mysql.sock \
#使用utf8字符集
-DDEFAULT_CHARSET=utf8 \
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci \
#使用其余额外的字符集
-DWITH_EXTRA_CHARSETS=all \
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled \
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled \
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1 \
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了,容许下载,不然会安装报错。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默认为禁用)
-DWITH_DEBUG=0
#编译
[root@db02 mysql-5.6.36]# make
#安装
[root@db02 mysql-5.6.36]# make install
#作软连接
[root@db02 mysql-5.6.36]# ln -s /application/mysql-5.6.38/ /application/mysql
#拷贝配置文件
[root@db02 mysql-5.6.36]# cp support-files/my*.cnf /etc/my.cnf
#拷贝mysql启动脚本
[root@db02 mysql-5.6.36]# cp support-files/mysql.server /etc/init.d/mysqld
#进入MySQL初始化脚本目录
[root@db02 mysql-5.6.36]# cd /application/mysql/scripts/
#初始化MySQL
[root@db02 mysql-5.6.36]# ./mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql
#受权
[root@db02 mysql-5.6.36]# chown -R mysql.mysql /application/mysql/
#给启动脚本受权700
[root@db02 mysql-5.6.36]# chmod 700 /etc/init.d/mysqld
#systemd管理mysql启动
[root@db02 mysql-5.6.36]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://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=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#设置开机自启动C6
[root@db02 mysql-5.6.36]# chkconfig mysqld on
#设置开机自启动C7
[root@db02 mysql-5.6.36]# systemctl enable mysqld
#启动MySQLC6
[root@db02 mysql-5.6.36]# /etc/init.d/mysqld start
#启动MySQLC7
[root@db02 mysql-5.6.36]# systemctl start mysqld
#建立tmp目录(5.6.36版本不会自动建立tmp目录)
[root@db02 mysql-5.6.36]# mkdir /application/mysql-5.6.36/tmp
#添加环境变量
[root@db02 ~]# echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
#我的推荐
[root@db02 ~]# echo 'PATH=/application/mysql/bin/:$PATH' >/etc/profile.d/mysql.sh
[root@db02 ~]# source /etc/profile.d/mysql.sh
#设置MySQL密码
[root@db02 ~]# mysqladmin -uroot password 'oldboy123'
#MySQL登录
[root@db02 ~]# mysql -uuser -ppassword -Ssocket -hhost
#MySQL基本操做及基本优化
#查看库
mysql> show databases;
#删库
mysql> drop database test;
#使用库
mysql> use mysql
#查看表
mysql> show tables;
#查看当前所在库
mysql> select database();
#查看mysql用户
mysql> select user,host from user;
mysql> select user,host,password from user;
#删除用户
mysql> select user,host from user;
mysql> drop user ''@'db02';
mysql> drop user root@db02;
mysql> drop user root@'::1';
mysql> drop user root@'127.0.0.1';

 

 

 

MYSQL体系架构

客户端与服务器端模型

MySQL服务器组成

MySQL的逻辑结构

MySQL‘库’的构成

MySQL存储底层结构(段、区、块)

 

1、客户端与服务器端模型(c/s)

 

 客户端程序如何链接到MYSQL---套接字

 

2、MySQL服务器组成-----实例

什么是实例?

  mysqld(进程)+master thread + N thread  + 内存区域

一个完整的数据库管理系统 = 实例+数据  

 

mysqld服务器程序构成

 

一条语句要运行

  链接层功能

    1.tcp/ip或者socket的链接方式

    2.验证用户名密码

    3.链接线程:接收SQL语句,返回执行结果

 

  SQL层  

    1.语法检查模块,检查上层发过来的SQL,进行语法检查

    2.权限检查模块,检测当前登陆的用户是否有权限操做数据库对象

    3.语义检查模块,识别SQL语句种类

    4.解析器,解析出SQL语句全部可能的执行方式,这些方式被称之为‘’执行计划‘’

    5.优化器,基于执行代价(系统资源的消耗做为纬度(cpu/内存/IO)).管理员能够经过间接地方法来干预优化器的选择

    6.执行器,按照优化器选择的"最优"的执行计划,执行SQL语句。得出结论:在某磁盘的某位置,发送给存储引擎层。

    7.提供查询缓存:有局限性。通常会用redis产品替代

    8.记录查询日志

SQL语句分类:管理不一样的数据库对象。

DDL:数据定义语言

  库定义:

    建立库定义   create database 库名 charset utf8;

    开发规范:

      1.库名要小写不能出现大写

      2.库名不能以数字开头

      3.库名要和业务功能相关

      4.建库要加字符集

    删除定义   drop database 库名;

    修改定义  alter database 库名 utf8mb4;

 

  表定义:

    建立表   create table 表名 (id

                 name

                 age   ); 

         

           

  create table 表名 (列1  列定义 ,列2  列定义,);

  列定义:

    1.数据类型:

      数字类型

        tinyint          

        int                

      字符串类型

        char          

        varchar           

        enum                 

      时间类型

        datetime             

        timestamp        

    2.列的其余属性:

      约束  not null(非空) primary key (非空且惟一) unique key(惟一)unsigned(对于数字列的约束,非负数)

      特殊定义 auto_increament(自增加  配合主键来使用)default(配合not null 来使用) comment(注释)

  区别 primary  多了not null,一张表只能有一个主键,会根据主键生成汇集索引树,未来存数据时会按照主键的顺序在磁盘上组织存储数据。按照主键条件查询,是顺序IO,速度很快。

 查看表列结构信息:

  desc 表名;

 查询建表语句:

  show  create table 表名;

 

查看库的信息:

   show databases;

查看建表语句:

   show create database 库名;

  

不use到某个库,能够在某个库下建立表

create table 库名.表名;

 

怎么作一个表结构如出一辙的表?

在表中添加列信息

  after 以后

  first 在第一

 

修改列名:

change:既能够改列名有能够改属性。

truncate table 表名;---->把表里全部内容删掉。

 

DCL:数据控制语言

GRANT  受权

REVOKE  回收权限

 

DML:数据操做语言   ---->操做的是表中的数据行。

  insert(增)语法: insert into 表名(列1,列2,列3 ,) values(值,值,值)

  update(改)

  delete(删)

  伪删除

    使用状态列,实现伪删除。  

    

 

 

DQL:数据查询语言

基本语法结构

select(选择,查询数据行,获取想要的数据行)

selete 列 from 表

selete 表.列1,表.列2 from 表

 

  存储引擎层

    1.和''磁盘''打交道的层次

    2.根据SQL层执行的结果,去磁盘上找到对应的数据,结构化成表模式,返回给用户。

 

 MySQL逻辑结构:登陆到mysql内部以后所看到的一切。

  库(database,schema):库名、库属性(大小、权限。。。)

  表(table):表名、列(列名字,列属性)、表属性、表数据、

  库跟表就是目录和文件的关系。一个mysql可能有多个库,一个库可能有多张表。 

 

 MySQL物理结构

  数据放到磁盘文件系统 。

  库在磁盘上就是个目录。

  表在磁盘上使用多个文件存储表的各项信息。

 

 

MYSQL基础管理 

  1.  MySQL的连接管理
  2.  MySQL用户启动权限基本管理
  3.  MySQL的启动和关闭
  4.  MySQL数据库配置文件详解
  5.  多实例简介及配置
  6.  数据库对象管理---SQL(库、表、行记录)

--------------------------------- 

MySQL的连接管理

  客户端工具使用

   1.mysql命令:

    做用:登陆mysql    

      -u   用户名

      -p   密码

        例1  mysql -uroot -p

        注意不要把密码写到命令行!!!

      -S   指定socket文件位置

      -h   执行连接的地址

      -p   指定连接的端口号

      

      -e  免交互执行mysql内部命令

      <   导入

      --help

  2.muysqladmin的简单使用

    关闭数据库   mysqladmin -uroot -p shutdown

 

  3.mysqldump的简单使用---->备份用的。 

 

MySQL用户启动权限基本管理

  用户的做用是什么?

    Linux 用户的做用:

      1.登陆系统

      2.管理操做系统对象(目录或者文件)

    MySQL 用户的做用:

      1.登陆mysql

      2.管理mysql的对象(库和表)

  用户是怎么定义的(表现方式)?

    Linux 用户表现方式: 用户名

    mysql 用户表现方式:用户名@'白名单'

 能够像一个地址同样--->'user1'@'10.0.0.200'
  还能够这样'user1'@'10.0.0.%

  'user1'@'10.0.0.5%'

  'user1'@'10.0.0.0、255.255.255.0'

  'user1'@'域名'

  'user1'@'%'
白名单支持的设置方法

  用户管理有哪些?

    建立用户 create user 用户名@'白名单' identified by '密码';建立用户的同时设定一个密码。

    删除用户 drop user 用户名@'白名单';

    查询用户  select user 用户名@'白名单';

    改密码 set password for 用户名@'白名单'  = PASSWORD('新密码');

select user,host,authentication_string form mysql.user;
补充5.7上操做有什么变化

  权限管理

    linux 权限做用:

        控制用户对文件可以操做哪些命令。

    权限分类:读、写、执行。

      r

      w

      X

    权限是文件的属性(权限是做用在文件上的,针对文件去设置权限) chmod 755 /test    

 

    grant all on *.* to wordpress@'10.0.0.%' identified by '123';  (受权 wordpress@'10.0.0.%'用户,可以对*.* 全部库和表,进行all 全部命令操做,处理grant和revoke。 若是 wordpress@'10.0.0.%'这个用户不存在会被自动建立,而且将密码设置为123)

    grant           权限            on            对象           to          用户

    chmod        权限     文件对象                  chown   用户 on   文件对象

    mysql的权限分类:     

INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,  PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE,grant,revoke    

    对象(范围):

      *.*                                                   /

      wordpress.*                                      /wordpress

      wordpress.t1                                     /wordpress/t1

 需求:

  1.来一个管理员用户admin,能经过10.0.0.%这个网段来管理mysql  (WITH GRANT OPTION)  

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

  2.开一个应用用户能经过app,能经过10.0.0.%这个网段对app库下全部表进行 INSERT,SELECT, UPDATE, DELETE, CREATE, DROP

mysql>grant SELECT,INSERT,UPDATE,DELETE on app.* to app@'10.0.0.%' identified by '123';

  3.查看用户拥有的权限:

mysql>show grants for 用户;
1.屡次设置权限,权限是相加关系
2。表会继承上层库的权限

  4.回收权限:

  revoke 权限   on    *.*   from   用户

 

MySQL的启动和关闭

  mysql的启动流程:

     

  

关闭

    mysqladmin shutdown

    service mysqld stop

 

 

MySQL数据库配置文件详解     

      

       

 

SQL应用

  1. MySQL客户端命令介绍
  2. MySQL获取帮助的方法
  3. DDL语句之管理数据库
  4. DDL语句管理表与案例介绍
  5. DML语句值管理表中的数据
  6. SELECT检索数据

MySQL客户端命令介绍

  mysql命令的功能

    链接数据库

    自带的客户端命令功能 (任何客户端命令都是能够不加结束符的)

      help  查看mysql客户端命令帮助

      use   切换到指定库

      exit 或者 /q  退出

      clear

      source  运行SQL脚本文件

      /G   格式化输出键值对形式的

    接收SQL语句,发送给服务端

      

 

MySQL获取帮助的方法

DDL语句之管理数据库

 

DDL语句管理表与案例介绍

DML语句值管理表中的数据

SELECT检索数据

  等值查询

  不等值查询

  模糊查询

  与and与or的结合

  与in,between的结合

  group by + 聚合函数(count(),max(),min (),AVG())

 

 

 

 

 

Information_schema获取元数据

DDL: Data Definition Languages 语句:数据定义语言,这些语句定义了不一样的数据段、数据库、表、列、索引等数据库对象。经常使用的数据关键字主要包括create、drop、alter等。

  

DML: Data Manipulation Language 语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。经常使用的语句关键字包括 insert、delete、update和select等。

 

DCL: Data Control Language 语句:数据控制语句,用于控制不一样数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的关键字包括grant、revoke等。

 

 

 

 

 

 

 

 

索引及执行计划

 

 

 

 

 

 

 

MYSQL存储引擎

 

 

 

 

 

 

 

MYSQL日志管理

 

 

 

 

 

 

 

 

MYSQL备份与恢复

 

 

 

 

 

 

MYSQL主从复制及架构演变

 

 

 

 

 

 

 

MYSQL高可用架构

 

 

 

 

 

 

MYSQL高性能架构

 

 

 

 

 

 

 

 

MYSQL优化

 

 

 

 

 

 

 

 

 

 

MYSQL5.7及8.0高可用新特性

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三.DBA的职业素养

四.MySQL简介及安装

  • 01 什么是数据?
  • 02 什么是数据库管理系统
  • 03 数据库管理系统种类
  • 04 MySQL发展史
  • 05 MySQL正在推进世界
  • 06 MySQL简介及产品线
  • 06 MySQL安装

 

 

什么是生产环境?

开发环境:开发环境是程序猿们专门用于开发的服务器,配置能够比较随意, 为了开发调试方便,通常打开所有错误报告。

测试环境:通常是克隆一份生产环境的配置,一个程序在测试环境工做不正常,那么确定不能把它发布到生产机上。

生产环境:是指正式提供对外服务的,通常会关掉错误报告,打开错误日志。能够理解为包含全部的功能的环境,任何项目所使用的环境都以这个为基础,而后根据客户的个性化需求来作调整或者修改。

三个环境也能够说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是一般说的真实环境。

 

代码怎么跑到服务器上?  布项目

engins---uwsgi---Python代码

 

 

 

什么是数据?

数据(data)是事实或观察的结果,是对客观事物的逻辑概括,是用于表示客观事物的未经加工的的原始素材。
数据能够是连续的值,好比声音、图像,称为模拟数据。也能够是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0,1的形式表示。

数据的定义: 数据是指对客观事件进行记录并能够鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。*

 

什么是数据库管理系统?

DBMS(database management system)

 

 

数据库管理系统种类

RDBMS

以多张二维表的方式来存储,又给多张表创建了必定的关系(关系型数据库,mysql,)

https://baike.baidu.com/item/二维表/2863955?fr=aladdin
什么是二维表

 

NoSQL

左边rdbms右边nosql 不少以json格式进行存储数据的(mogodb,redis...)

RDMS与NoSQL对比

 

  • 功能性能对比:

  

  

  • 特色对比:

  关系型数据库(RDBMS)的特色:

  • 1.二维表
  • 2.典型产品Oracle传统企业,MySQL互联网企业
  • 3.数据存取是经过SQL(Structured Query Language结构化查询语言)
  • 4.最大特色数据安全性方面强(ACID)

 

  非关系型数据库(NoSQL:Not only SQL)的特色:

  • 1.不是否认关系型数据库,而是作关系型数据库的补充。
  • 2.想作老大,先学会作老二。

 

  • 时代特色对比:

 

  • 1. web1.0时代
    •   1.1 企业提供内容,用户浏览,因此关系型数据库够用,并发并不高,因此不须要nosql。

 

  • 2. web2.0时代
    •   2.1 核心是企业提供平台,用户参与提供内容,这个时代关系型数据库没法知足需求了。

 

  • 3. 2003NoSQL出现
    •   3.1 memcache的诞生,关注的点是性能,可是针对安全性能关注比较低,随着安全性能需求不断提高,因此有了redis。

 

  • 4. redis的特色
    •   4.1 依然高性能高并发
    •   4.2 数据持久化功能
    •   4.3 支持多数据类型,主从复制和集群
    •   4.4 管理再也不使用SQL了

 

 

 

NoSQL特性总览

  • 1. 不是否认关系型数据库,而是作关系型数据库的补充,如今也有部分替代的趋势mongodb。
  • 2. 关注高性能,高并发,灵活性,忽略和上述无关的功能。
  • 3. 如今也在提高安全性和使用功能。
  • 4. 典型产品:redis(持久化缓存,两个半天)、MongoDB(最接近关系型数据库的NoSQL)、memcached。
  • 5. 管理不适用SQL管理,而是用一些特殊的API或数据接口。

NoSQL的分类、特色、典型产品

  • 1.键值(KV)存储:memcached、redis
  • 2.列存储(column-oriented):HBASE(新浪、360)Cassandra(200台服务器集群)
  • 3.文档数据库(document-oriented):MongoDB(最接近关系型数据库的NoSQL)
  • 4.图形存储(Graph):Neo4j

 

  

MySQL安装    ----------------------------------------------------------------------------------------------------------------------------

我这里是在linux虚拟机上二进制安装法(二进制就是绿色版,解压开就能够用。惟一的区别在于二进制数据库安装须要初始化!)

 

把安装包传到服务器上:直接拖。  Mac本不支持直接拖,Mac怎么安装,有个小技巧:详见Mac安装的博客。

 

传好了是这个样子:下一步解压

源码安装的话会很是慢(须要编译),源码安装总共有四个步骤:  解压---生成---编译---安装

 

解压的命令:  解压到root目录下

tar xf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz 

解压完了之后,通常在公司中无论装什么软件都会有规范:全部的软件都装在一个目录下。能够本身建立也能够放在系统本身提供的一个目录(/usr/local/),我们这里放在/usr/local/目录下面。而且给它给个名。

移动到/usr/local/mysql-5.6.40/以后,看一下里面大概有一些文件

 

移动好以后作个软链接:软链接就相似于Windows上面的快捷方式。对于运维来讲作一个软链接是一个规范,就是由于快速升级。

ln -s /usr/local/mysql-5.6.40 /usr/local/mysql

 

而后进到 /usr/local/mysql-5.6.40/  这个目录下有一个support-files  而后看一下里面有一些文件

cd /usr/local/mysql-5.6.40/support-files/

  

my-default.cnf 这个是mysql的配置文件,我们把它拷贝到/etc/my.cnf 中并把它覆盖掉(由于它自己下面有一个)

mysql.server 这个是mysql的启动脚本  给他拷贝到 /etc/init.d/mysqld  

 

拷贝完以后作一个初始化:  初始化在scripts目录里面,怎么作初始化,

首先须要建立一个mysql数据库的用户

useradd mysql -s /sbin/nologin -M

 

而后初始化  须要用到mysql_install_db 指定user是mysql,在指定数据库安装的路径在哪,作完软连接叫mysql就OK了,还有一个要指定数据目录,数据目录就是专门存放表啊库啊这些文件啊之后还有binloge日志这些的。

须要先装一个库   yum install libaio-devel -y

装完以后初始化:./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data      看到两个OK就是初始化完成了。

 

 

 

作完初始化还要受权:chown -R mysql.mysql /usr/local/mysql*

 

启动服务:/etc/init.d/mysqld start

 

若是mysql不加到环境变量里它在这里:

 

把mysql加到环境变量中去:

vim /etc/profile.d/mysql.sh

export PATH="/usr/local/mysql/bin:$PATH"          这里注意要用双引号!

添加好以后:

 

看系统的环境变量里都有什么路径 以:作分隔符   把命令放在这些路径里面均可以直接去执行

 

如今敲mysql就能够了:

 

 

1)解压
tar xf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz

2)移动到安装目录
mv mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql-5.6.40

3)作软链接
ln -s /usr/local/mysql-5.6.40 /usr/local/mysql

4)拷贝启动脚本
cp mysql.server /etc/init.d/mysqld

5)进入初始化目录
cd /usr/local/mysql-5.6.40/scripts

6)建立MySQL用户
[root@elk01 scripts]# useradd mysql -s /sbin/nologin -M

7)安装依赖
yum install libaio-devel -y

8)初始化
[root@elk01 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

9)受权
[root@elk01 scripts]# chown -R mysql.mysql /usr/local/mysql*
二进制安装MySQL

 

 

 

 

 

 

 

MySQL误删除root用户    -------------------------------------------------------------------------------------

sql语句有哪些?

查用户  在mysql库里面有个user表:    

在mysql里面用户是怎么定义的呢?   root(用户名)@'%'    host就是主机域说白了就是ip地址

删用户 

 

用delete 删 有个规范 必定要加where,不加where这个表就没了。

 

把root用户表删了:在生产环境中不要这么作

 

退出mysql命令行:

在Linux中  Ctrl+c

不在Linux中 exit 或者quit    快捷键是 \q

 

没重启前还能用,重启后就不行了,由于有缓存

 

停掉mysql数据库:

 

 

mysql启动的流程:?

 

跳过受权表、网络启动:mysqld_safe --skip-grant-tables  --skip-networking &     &表明把这条命令放到后台运行   ,若是没加&  Ctrl+z  再敲个 bg 均可以       防止任何人都能连

 

链接数据库

 

刷新系统受权表

 

执行受权命令,建立用户:

 

重启mysql

 

 

 

 

不基于

建立用户

看表结构

插入数据


#正确方法建立root用户
#正确方法建立root用户
mysql> insert into mysql.user values (‘localhost’,’root’,PASSWORD(‘123’),
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
‘Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’Y’,
’’,
’’,
’’,
’’,0,0,0,0,’mysql_native_password’,’’,’N’);

 

1)停库
[root@elk01 scripts]# /etc/init.d/mysqld stop

2)跳过受权表,网络 启动
[root@elk01 scripts]# mysqld_safe --skip-grant-tables  --skip-networking &

3)链接数据库
[root@elk01 ~]# mysql

4)刷新系统受权表
mysql> flush privileges;

5)建立用户
mysql> grant all on *.* to root@'localhost' identified by '123' with grant option;

6)重启MySQL
[root@elk01 ~]# /etc/init.d/mysqld restart
解决MySQL误删除root用户步骤:

 

 

 

 

 

数据库5.6版本的给初始化后的mysql设置密码:

 

建立用户:

 

 

MySQL配置文件及链接方式--------------------------------------------------------------

MySQL数据库两种链接方式:

1.tcp/ip

2.socket

 

有什么区别?socket只能在本地链接。

 

tcp、ip

 

 

修改配置文件

 

 

 

相关文章
相关标签/搜索