詳述MySQL數據庫介紹與安裝

數據庫的基本概念

數據

  • 描述事物的符號記錄稱爲數據(Data)
  • 包括數字、文字、圖形、圖像、聲音、檔案記錄等
  • 以“記錄”形式按統一的格式進行存儲

  • 將不同的記錄組織在一起,就形成了“表”
  • 是用來存儲具體數據的

數據庫

  • 數據庫就是表的集合,是存儲數據的倉庫
  • 以一定的組織方式存儲的相互有關的數據

數據庫系統發展史

第一代數據庫

  • 自20世紀60年代起,第一代數據庫系統問世。它們是層次模型與網狀模型的數據庫系統,爲統一管理和共享數據提供了有力的支撐

第二代數據庫

  • 20世紀70年代初,第二代數據庫——關係數據庫開始出現
  • 20世紀80年代初,IBM公司的關係數據庫系統DB2問世,作爲第二代數據庫系統的關係數據庫,開始逐步取代層次與網狀模型的數據庫,成爲占主導地位的數據庫,成爲行業主流。到目前爲止,關係數據庫系統仍佔領數據庫應用的主要地位

第三代數據庫

  • 自20世紀80年代起,各種適應不同領域的新型數據庫系統不斷涌現,如工程數據庫、多媒體數據庫、圖形數據庫、智能數據庫、分佈式數據庫及面向對象數據庫等,特別是面向對象數據庫系統,由於其實用性強、適應面廣而受到人們的青睞
  • 20世紀90年代後期,形成了多種數據庫系統共同支撐應用的局面。當然,在商務應用方面,依然還是關係數據庫佔主流,不過,已經有一些新的元素被添加進主流商務數據庫系統中。例如,Oracle支持的"關係—對象”數據庫模型

當今主流數據庫介紹

SQL Server (微軟公司產品)

  • 面向Windows操作系統
  • 簡單、易用

Oracle (甲骨文公司產品)

  • 面向所有主流平臺
  • 安全、完善,操作複雜

DB2 (IBM公司產品)

  • 面向所有主流平臺
  • 大型、安全、完善

MySQL (甲骨文公司收購)

  • 免費、開源、體積小

關係數據庫

  • 關係數據庫系統是基於關係模型的數據庫系統,它的基本概念來自於關係模型
  • 關係模型建立在關係代數的理論基礎上,數據結構使用簡單易懂的二維數據表,可以用簡單的“實體—關係”圖來直接 表示
  • 下面E-R圖中包含了實體(數據對象)、關係和屬性三要素

詳述MySQL數據庫介紹與安裝

實體

  • 也稱爲實例,對應現實世界中可區別於其他對象的“事件”或“事物”,如銀行客戶、銀行賬戶等

屬性

  • 實體所具有的某一特性,一個實體可以有多個屬性。例如,"銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性

聯繫

  • 實體集之間的對應關係稱爲聯繫,也稱爲關係。例如,銀行客戶和銀行賬戶之間存在“儲蓄”的關係

所有實體及實體之間聯繫的集合構成一個關係數據庫

關係數據庫的存儲結構是二維表格,反映事物及其聯繫的數據是以表格形式保存的

在每個二維表中, 每一行稱爲一條記錄,用來描述一個對象的信息;每一列稱爲一個字段,用來描述對象的一個屬性

關係數據庫應用

關係型數據庫

  • Oracle,MySQL
  • SQLServer、Sybase
  • Informix、access
  • DB2、FoxPRO

關係型數據庫應用舉例

  • 12306用戶信息系統
  • 淘寶賬號信息系統,支付寶賬號系統、移動、電信、聯通手機信號信息系統、計費系統銀行用戶賬號系統
  • 網站用戶信息系統

非關係數據庫介紹

  • 非關係數據庫也被稱作NoSQL(Not Only SQL),存儲數據不以關係模型爲依據,不需要固定的表格式
  • 非關係型數據庫作爲關係數據庫的一個補充,在日益快速發展的網絡時代,發揮着高效率與高性能
  • 非關係型數據庫的優點
    • 數據庫高併發讀寫的需求
    • 對海量數據高效率存儲與訪問
    • 數據庫的高擴展性與高可用性的需求

非關係型數據庫存儲方式

  • 鍵-值方式(key-value),以鍵爲依據存儲、刪、改數據
  • 列存儲(Column-oriented),將相關的數據存儲在列族中
  • 文檔的方式,數據庫由一系列數據項組成,每個數據項都有名稱與對應的值
  • 圖形方式,實體爲頂點,關係爲邊,數據保存爲一個圖形

非關係數據庫產品

  • Memcached是一 個開源的、高性能的、具有分佈式內存對象的緩存系統,以key-value方式存儲數據

    • 緩存數據以減輕數據庫壓力並能加快訪問速度
    • 加速動態Web應用
    • 緩存的內容保存在內存中
  • redis也是一 個以key-value方式存儲數據的,數據也是保存在內存中,但會定期將數據寫入磁盤中
  • 相對於FMemcached有以下特點
    • 支持內存緩存
    • 支持持久化.
    • 數據類型更多
    • 支持集羣、分佈式
    • 支持隊列

redis應用舉例

  • 數據庫前端緩存
  • session共享
  • 當需要緩存除了key/value之外的更多數據類型時
  • 當緩存的數據需要長久保存時

MySQL數據庫介紹

  • MySQL是一款深受歡迎的開源關係型數據庫
  • Oracle旗下的產品
  • 遵守了GPL協議,可以免費使用與修改
  • 特點
    • 性能卓越、服務穩定
    • 開源、無版權限制、成本低
    • 多線程、多用戶
    • 基於C/S (客戶端/服務器)架構
    • 安全可靠

MySQL商業版與社區版

  • MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用
  • MySQL社區版是由分散在世界各地的MySQL開發者、愛好者一起開發與維護,可以免費使用
  • 兩者區別
    • 商業版組織管理與測試環節更加嚴格,穩定性更好
    • 商業版不遵守GPL
    • 商業版可獲得7*24小時的服務,如故障維護與打補丁等

MySQL產品陣營

  • 第一陣營: 5.0-5.1陣營,可說是早期產品的延續
  • 第二陣營: 5.4-5.7陣營,更好地整合了MySQL AB公司、社區、第三方公司開的存儲引擎,從而提高性能
  • 第三陣營: 6.0-7.1陣營,就是MySQL Cluster版本,爲適應新時代集羣對數據庫的需求而開發
  • MySQL下載網址

MySQL安裝實例

  • 在VMware虛擬機中打開Linux系統,並下載MySQL壓縮包到宿主機,並設置保存MySQL壓縮包的文件夾共享,方便Linux系統掛載使用 MySQL5.7下載
[root@localhost ~]# yum install gcc gcc-c++ make ncurses ncurses-devel bison cmake -y    //安裝環境包
已加載插件:fastestmirror, langpacks
base                                                               | 3.6 kB  00:00:00     
extras                                                             | 2.9 kB  00:00:00
...
已安裝:
  bison.x86_64 0:3.0.4-2.el7                          cmake.x86_64 0:2.8.12.2-2.el7       
  gcc.x86_64 0:4.8.5-39.el7                           gcc-c++.x86_64 0:4.8.5-39.el7       
  ncurses-devel.x86_64 0:5.9-14.20130511.el7_4       

作爲依賴被安裝:
  cpp.x86_64 0:4.8.5-39.el7               glibc-devel.x86_64 0:2.17-292.el7              
  glibc-headers.x86_64 0:2.17-292.el7     kernel-headers.x86_64 0:3.10.0-1062.4.3.el7    
  libmpc.x86_64 0:1.0.1-3.el7             libstdc++-devel.x86_64 0:4.8.5-39.el7          
  m4.x86_64 0:1.4.16-10.el7              

更新完畢:
  make.x86_64 1:3.82-24.el7             ncurses.x86_64 0:5.9-14.20130511.el7_4            

作爲依賴被升級:
  glibc.x86_64 0:2.17-292.el7                 glibc-common.x86_64 0:2.17-292.el7         
  libgcc.x86_64 0:4.8.5-39.el7                libgomp.x86_64 0:4.8.5-39.el7              
  libstdc++.x86_64 0:4.8.5-39.el7             ncurses-base.noarch 0:5.9-14.20130511.el7_4
  ncurses-libs.x86_64 0:5.9-14.20130511.el7_4

完畢!
[root@localhost ~]# useradd -s /sbin/nologin mysql     //創建MySQL程序型用戶
[root@localhost ~]# mount.cifs //192.168.100.8/shares /mnt/       //將宿主機中MySQL壓縮包路徑掛載到Linux系統中
Password for root@//192.168.100.8/shares:  
[root@localhost ~]# cd /mnt/     //進入掛載點目錄
[root@localhost mnt]# tar zxvf mysql-boost-5.7.20.tar.gz -C /opt      //解壓MySQL壓縮包到opt目錄
......
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/extract_key.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/buckets.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/allocate.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/detail/util.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_map.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_set.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_set_fwd.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/unordered/unordered_map_fwd.hpp
mysql-5.7.20/boost/boost_1_59_0/boost/timer.hpp
[root@localhost mnt]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# cmake \        //配置mysql
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \        //指定安裝路徑
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \  //指定mysql.sock.路徑
> -DSYSCONFDIR=/etc \                               //指定配置文件存放位置
> -DSYSTEMD_PID_DIR=/usr/local/mysql \             //指定pid文件存放爲位置
> -DDEFAULT_CHARSET=utf8 \                         //字符集格式utf-8
> -DDEFAULT_COLLATION=utf8_general_ci \          
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \             //開啓存儲引擎
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DMYSQL_DATADIR=/usr/local/mysql/data \      //指定數據存放位置
> -DWITH_BOOST=boost \                          //關聯支持c++運行庫
> -DWITH_SYSTEMD=1                            //開啓systemd
....
-- CMAKE_C_LINK_FLAGS: 
-- CMAKE_CXX_LINK_FLAGS: 
-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/mysql-5.7.20
[root@localhost mysql-5.7.20]# make                       //make過程(時間比較長,耐心等待)
....
[100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/readline.cc.o
Linking CXX executable mysql_embedded
[100%] Built target mysql_embedded
Scanning dependencies of target mysqltest_embedded
[100%] Building CXX object libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/__/__/client/mysqltest.cc.o
Linking CXX executable mysqltest_embedded
[100%] Built target mysqltest_embedded
Scanning dependencies of target my_safe_process
[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o
Linking CXX executable my_safe_process
[100%] Built target my_safe_process
[root@localhost mysql-5.7.20]# make install     //安裝
...
-- Installing: /usr/local/mysql/./COPYING-test
-- Installing: /usr/local/mysql/./README-test
-- Up-to-date: /usr/local/mysql/mysql-test/mtr
-- Up-to-date: /usr/local/mysql/mysql-test/mysql-test-run
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Up-to-date: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- Installing: /usr/local/mysql/support-files/mysqld_multi.server
-- Installing: /usr/local/mysql/support-files/mysql-log-rotate
-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server
[root@localhost mysql-5.7.20]# cd /usr/local/           //進入安裝目錄
[root@localhost local]# chown -R mysql.mysql mysql/     //mysql目錄更改用戶與組
[root@localhost local]# mv /etc/my.cnf /etc/my.cnf.bak     //更改配置文件名稱
[root@localhost local]# vim /etc/my.cnf         //重新編輯配置文件
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
:wq
[root@localhost local]# vim /etc/profile
...
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH     
export PATH                                //重新聲明環境變量
:wq
[root@localhost local]# source /etc/profile      //重新執行
[root@localhost local]# cd /usr/local/mysql/bin          //進入MySQL命令目錄
[root@localhost bin]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data                  //初始化數據庫
2019-12-02T11:51:28.112082Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-12-02T11:51:28.263398Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-12-02T11:51:28.287408Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-12-02T11:51:28.341284Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 131f32df-14fa-11ea-87e6-000c297265cb.
2019-12-02T11:51:28.342106Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-12-02T11:51:28.342452Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
[root@localhost ~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service  /lib/systemd/system/ 
//將MySQL啓動腳本夫複製到系統system目錄下
[root@localhost ~]# systemctl enable mysqld.service      //設置MySQL爲開機自啓動
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost ~]# systemctl start mysqld.service          //啓動MySQL
[root@localhost ~]# mysqladmin -u root -p password     //設置MySQL數據庫密碼
Enter password:                  //沒有原始密碼,直接回車
New password:                   //輸入新密碼
Confirm new password:           //再次輸入密碼
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.  
//安全提示
[root@localhost ~]# mysql -u root -p      //登錄MySQL
Enter password:          輸入密碼
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;     //查看數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章