はじめに、詳細なMySQLデータベース

データベースの基本的な考え方

データ

  • シンボルデータの記録が物事を記述するために(Data)を参照され
  • 数字、テキスト、グラフィックス、画像、音声、アーカイブ、レコードなどを含みます
  • 「記録」形式の保存のための統一フォーマットによると、

テーブル

  • 別のレコードは、「テーブル」を形成するために一緒に編成しました
  • データの特定を格納するために使用されます

データベース

  • データベーステーブルのコレクションは、データが倉庫に格納されています
  • 特定の方法団体の店で相互に関連するデータ

データベースシステムの開発の歴史

データベースの第一世代

  • 1960年代から、データベースシステムの第一世代が利用できます。彼らは、統合管理やデータ共有のための強力なサポートを提供する、階層モデルのデータベース・システムとネットワークモデルです

第二世代データベース

  • 1970年代初頭、第二世代のデータベース - リレーショナルデータベースが始まりました
  • データベースのリレーショナル・データベース・システムの第二世代は、徐々にデータベースレベルとネットワークモデルを置き換えるために始めた1980年代初頭、可能なIBMのDB2リレーショナルデータベースシステムは、主要なデータベース、主流の業界になりました。これまでのところ、リレーショナルデータベースシステムは、依然として主要な位置データベース・アプリケーションを占有しました

第三世代のデータベース

  • 1980年代以降、異なるデータベースシステムの様々な理由により、このような技術データベース、マルチメディアデータベース、グラフデータベース、インテリジェントデータベース、分散データベースやオブジェクト指向データベース、特にオブジェクト指向データベースシステムとして新興分野に適応するために、その実用的な、幅の広い適応とすべての年齢の人々
  • 1990年代後半20は、データベースシステムの様々な一般的なアプリケーション状況をサポートして形成されています。もちろん、ビジネスアプリケーションでは、リレーショナルデータベースがまだ主流ですが、いくつかの新しい要素が既に存在している主流のビジネスデータベース・システムに追加されます。たとえば、Oracleのサポート「の関係 - オブジェクト」データベースモデル

今日の主流のデータベース入門

SQL Serverの(Microsoft製品)

  • Windowsオペレーティングシステムの場合
  • シンプルで使いやすいです

オラクル(Oracle製品)

  • すべての主要なプラットフォームの場合
  • セキュリティは、複雑な動作、改善します

DB2(IBM社)

  • すべての主要なプラットフォームの場合
  • 大規模な、安全で、音

MySQLの(Oracleの買収)

  • 無料、オープンソース、小さいサイズ

リレーショナルデータベース

  • リレーショナルデータベースシステムは、リレーショナルモデルに基づいて、データベース・システム、リレーショナルモデルからの基本的な概念であります
  • 直接表現することを計画 - 簡単な2次元のデータテーブルを使用してリレーショナル代数の理論に基づいて、関係モデル、データ構造は、あなたが簡単な「関係実体」を使用することができます
  • 図ERは、次のエンティティ(データオブジェクト)、三つの要素と属性の間の関係が含まれています

はじめに、詳細なMySQLデータベース

エンティティ

  • また、インスタンスと呼ばれ、対応する実世界のオブジェクトは、など銀行の顧客、銀行口座などの他の「イベント」や「もの」、と区別することができます

プロパティ

  • 特定の特性を有するエンティティ、エンティティが複数の属性を有することができます。たとえば、「銀行の顧客は、」各エンティティは、集中型のエンティティ名、住所、電話やその他の財産を持っています

接触

  • また、関係と呼ばれる接触と呼ばれるエンティティセット、の対応。例えば、銀行の顧客と銀行口座間の「貯蓄」との関係があります

エンティティとエンティティ間のすべてのリンクのセットは、リレーショナルデータベースを構成します

ストレージ構造は、2次元のリレーショナルデータベーステーブルである事を反映し、その連絡先のデータが表形式で保存されています

各二次元の表では、各行はレコード、オブジェクトを記述するために使用される情報と呼ばれ、各列はフィールドと呼ばれ、オブジェクトのプロパティを記述するために使用されます

リレーショナルデータベースアプリケーション

リレーショナルデータベース

  • オラクル、MySQLの
  • SQLServerのは、Sybase
  • Informixの、アクセス
  • DB2、FoxProの

リレーショナルデータベースアプリケーション例

  • 12306ユーザー情報システム
  • 淘宝網のアカウント情報システム、Alipayのアカウントシステム、モバイル、テレコム、中国聯通の携帯電話の信号情報システム、課金システムのユーザーアカウントの銀行システム
  • Webサイトのユーザー情報システム

非リレーショナルデータベースの紹介

  • また、非リレーショナル・データベースのNoSQL(ませんのみSQL)と呼ばれる、データが基づいているリレーショナルモデルに保存されていない、固定されたテーブルの形式を必要としません
  • 高効率と高パフォーマンスを演奏インターネット時代のますます急速な発展中の相補的なリレーショナルデータベース、などの非リレーショナルデータベース、
  • 非リレーショナルデータベースの利点
    • 高同時読み書きデータベースの需要
    • 効率的な大量データストレージおよびアクセス
    • データベースのための高いスケーラビリティと高可用性の要件

非リレーショナル・データベース・ストレージ

  • キー - モード(キーと値)の値は、キーストア、削除、変更データの基礎にあります
  • ストレージカラム(列指向)、関連データは、カラムファミリーに保存されています
  • どの文書が、データベースは、一連のデータ項目から構成され、各データ項目は、名前に対応する値を持っています
  • 頂点としてグラフエンティティ、エッジの関係は、グラフィックにデータを保存しました

非リレーショナル・データベース製品

  • キー値のデータを格納するオープンソース、高性能、分散メモリオブジェクトキャッシュシステムであるmemcachedの

    • ストレスを軽減し、データベースのアクセス速度を高速化するために、キャッシュデータ
    • 動的なWebアプリケーションを高速化
    • メモリに保存されたキャッシュされたコンテンツ
  • Redisのは、データがメモリに格納され、また、店舗のキーと値のデータへの道ですが、ディスクへの書き込み、定期的にデータの意志
  • それはFMemcachedに対する次のような特徴を持っています
    • サポートメモリキャッシュ
    • 永続性をサポートしています。
    • 複数のデータ型
    • クラスタのサポート、分散
    • サポートキュー

アプリケーション例のRedisの

  • データベースのフロントエンドキャッシュ
  • 共有セッション
  • ときのキー/値に加えて、複数のデータ型をバッファリングする必要性を
  • データのキャッシュは長期保存が必要な場合

MySQLデータベースの紹介

  • MySQLはオープンソースのリレーショナルデータベースです
  • オラクルの製品
  • 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のインストール

  • 簡単にマウントするLinuxシステムを使用して、VMwareの仮想マシンのLinuxシステムを開き、ホストのMySQLへの圧縮パッケージをダウンロードし、MySQLの設定は、アーカイブフォルダの共有を保存している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)

おすすめ

転載: blog.51cto.com/14473285/2455483