關係型數據庫之——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

 

 

修改配置文件

 

 

 

相關文章
相關標籤/搜索