关系型数据库之——MYSQL

一、DBA工作内容:

  初级DBA:

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

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

  中级DBA:

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

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

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

  高级DBA:

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

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

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

二、IT人员应该具备的职业素质

个人素养

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

职业技能

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

 

什么是数据?

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

什么是数据库管理系统?

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

数据库管理系统种类

  关系型数据库(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存储底层结构(段、区、块)

 

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

 

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

 

二、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

 

 

修改配置文件

 

 

 

 

转载于:https://www.cnblogs.com/zhangrenguo/p/10716905.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值