06.19 MySQL數據庫含義與安裝(初級)

第一章 數據庫分類

1. 關係型數據庫
數據庫裏有很多二維表格,表一表二表三表一百等等。多張表之間可能有關聯。

2. 非關係型數據庫
包含多個數據庫服務(多實例)3306/3307/3307。
每個數據庫服務實例包含多個庫。
每個庫裏包含多個表。
1號倉庫:表1表2。
2號倉庫:表3表4。
每張表包含多行數據。

3. 數據庫產品
MySQL和Oracle數據庫,都屬於oracle公司
oracle大型傳統企業
MySQL互聯網企業
access小型(微軟)

4. 數據庫分類各版本

名稱 版本
Oracle 版本包括Oracle8i、Oracle9i、Oracle10g、Oracle11g、Oracle12c等
MariaDB 數據庫管理系統是MySQL數據庫的一個分支。
微軟SQL Server SQL Server數據庫。Access數據庫(office套件 php/asp+access)

第二章 關係型數據庫

特點: SQL結構化查詢語言管理關係型數據庫!

1. 二維表
關係型數據庫在存儲數據時實際就是採用的一張二維表(和word、Excel裏表格幾乎一樣)

2. 市場佔有量
市場佔有量較大的是MySQL和Oracle數據庫,而互聯網場景最常用的是MySQL數據庫。

3. SQL結構化查詢語言
它通過SQL結構化查詢語言來存取、管理關係型數據庫的數據。

4. 安全一致性高
關係型數據庫在保持數據安全和數據一致性方面很強,遵循ACID理論。

第三章 非關係型數據庫

NoSQL數據庫是not only sql,不僅僅是SQL。
立足油頭:只關注高性能、高併發。
Memcached純內存軟件。Rsdis內存也可以持久化
管理NoSQL不再是SQL結構化查詢語言
數據表現:不是二維表格了,管理也不是使用SQL語句了。
非關係型數據庫(NOSQL)只是小結:

1. 關於數據庫的補充
NOSQL數據庫不是否定關係數據庫,而是作爲關係數據庫的一個重要補充。

2. 專注高性能高併發
NOSQL數據庫爲了靈活及高性能、高併發而生,忽略影響高性能、高併發的功能。

3. 典型產品Redis
在NOSQL數據庫領域,當今的最典型產品爲Redis(持久化緩存)、Mongodb、memcached(純內存)等。

4. 沒有標準的查詢語言
NoSQL數據庫沒有標準的查詢語言(SQL),通長使用REST式的數據接口或者查詢API。

第四章 MySQL工作流程原理

這裏寫圖片描述

第五章 MySQL安裝步驟

  1. yum/rpm不能定製
  2. 5.0產品 configure、make、make install
  3. 5.6產品 ./cmake ,make,make install
  4. 二進制,解壓即可
  5. 利用源碼編譯安裝,做成rpm包,然後在yum倉庫yum安裝*

1. 源碼安裝包下載

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37.tar.gz

2. 安裝依賴包

yum install ncurses-devel libaio-devel gcc-c++ -y 

3. cmake安裝

yum install  -y cmake

4. 添加用戶

useradd -s /sbin/nologin -M mysql

5. 解壓安裝包

tar xf mysql-5.6.37.tar.gz
cd mysql-5.6.37/

6. cmake配置

cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.37 \
-DMYSQL_DATADIR=/application/mysql-5.6.37/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.37/tmp/mysql.sock \
-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 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

#更多內容可以參考官方MySQL 5.6的cmake編譯參數http://dev.mysql.com/doc/refman/5.6/en/source-#configuration-options.html

7. 編譯和編譯安裝

make && make install

8. 創建軟鏈接

ln -s  /application/mysql-5.6.37/ /application/mysql

9. 拷貝配置文件

cp support-files/my*.cnf /etc/my.cnf

10. 初始化數據庫

/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql

11. 更改所有者屬組授權

chown -R mysql.mysql /application/mysql/

12. 配置啓動腳本

cp support-files/mysql.server /etc/init.d/mysqld

13. 更改權限700

chmod 700 /etc/init.d/mysqld

14. 加入開機自啓動

chkconfig mysqld on
chkconfig --list mysqld

15. 啓動MySQL

sed -i '/socket/a socket = /application/mysql-5.6.37/data/mysql.sock' /etc/my.cnf
/etc/init.d/mysqld start

[root@mysql-51 mysql]# ss -lntup|egrep 3306
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=24588,fd=10))

16. 設置MySQL環境變量

echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
tail -1 /etc/profile
source /etc/profile
echo $PATH
mysql -S /application/mysql-5.6.37/data/mysql.sock

17. root用戶設置密碼

mysqladmin -uroot password '123456' -S /application/mysql/data/mysql.sock
mysql -uroot -p123456 -S /application/mysql/data/mysql.sock

第六章 MySQL多實例安裝

1. 先停掉單實例

/etc/init.d/mysqld stop

2. 上傳data-5.6-new-book.zip多實例包

unzip data-5.6-new-book.zip
Archive:  data-5.6-new-book.zip
   creating: data/
   creating: data/3306/
  inflating: data/3306/my.cnf        
  inflating: data/3306/mysql         
   creating: data/3307/
  inflating: data/3307/my.cnf        
  inflating: data/3307/mysql  

[root@mysql-51 ~]# tree /data/
/data/
├── 3306
│   ├── my.cnf
│   └── mysql
└── 3307
    ├── my.cnf
    └── mysql

3. 配置文件區別

vimdiff /data/3306/my.cnf /data/3307/my.cnf  #僅有端口之間的區別
mkdir /data/{3306,3307}/data -p
chown -R mysql.mysql /data/

4. 初始化數據庫

cd /application/mysql/scripts
./mysql_install_db  --defaults-file=/data/3306/my.cnf --basedir=/application/mysql/ --datadir=/data/3306/data --user=mysql
./mysql_install_db  --defaults-file=/data/3307/my.cnf --basedir=/application/mysql/ --datadir=/data/3307/data --user=mysql
/data/3306/mysql start
/data/3307/mysql start
ss -lntup|egrep 330
mysql -S /data/3306/mysql.sock 
mysql -S /data/3307/mysql.sock

[root@mysql-51 3307]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1243/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1776/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      17831/mysqld        
tcp6       0      0 :::3307                 :::*                    LISTEN      19338/mysqld        
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1243/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1776/master         

第七章 添加3308數據庫

mkdir -p /data/3308/data
\cp /data/3306/my.cnf  /data/3308/
\cp /data/3306/mysql  /data/3308/
sed -i 's/3306/3308/g' /data/3308/my.cnf 
sed -i 's/server-id = 6/server-id = 8/g' /data/3308/my.cnf 
sed -i 's/3306/3308/g' /data/3308/mysql
chown -R mysql:mysql /data/3308
chmod 700 /data/3308/mysql
cd /application/mysql/scripts
./mysql_install_db --defaults-file=/data/3308/my.cnf --datadir=/data/3308/data --basedir=/application/mysql --user=mysql
chown -R mysql:mysql /data/3308
egrep "server-id|log-bin" /data/3308/my.cnf 
/data/3308/mysql start
sleep 5
netstat -lnt|grep 3308

第八章 MySQL啓動與關閉

1. 單實例啓動關閉

##<==最先使用MySQL自帶的管理腳本
/etc    /init.d/mysqld stop

##<==第二種爲mysqladmin管理方法
mysqladmin -uroot -poldboy123 shutdown  ##這個命令的最大障礙就是必須事先知道密碼

##<==第三種爲利用系統進程管理方法
kill pid         ##<==這裏的pid爲數據庫服務對應的進程號
killall mysqld   ##<==這裏的mysqld是數據庫服務對應的進程名字
pill mysqld      ##<==這裏的mysqld是數據庫服務對應的進程名字

2. 多實例啓動關閉

啓動3306示例命令服務的命令爲/data/3306/mysql start,實際上就是就是msqld_safe加上不同的示例配置文件參數啓動,示例如下:
mysqld_safe --default-file=/data/my.cnf 2>&1 >/dev/null &

停止3306示例命令爲/data/3306/mysqld stop,實際上就是使用mysqladmin命令方法,示例如下:
mysqladmin -uroot -poldboy123 -S /data/3306/mysql.sock shutdown

第九章 MySQL登錄安全優化

1. 交互式

[root@mysql_52 ~]# mysql -uroot -p
Enter password:
[root@db02 ~]# HISTCONTROL=ignorespace   忽略命令開頭帶空格放入環境變量
[root@db02 ~]#  mysql -uroot -poldboy123

2. 非交互式

[root@mysql_52 ~]# mysql -uroot -poldboy123

3. 寫入配置文件

[root@mysql_52 ~]# vim /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
user=root
password=oldboy123
[root@mysql_52 ~]# chmod 600 /etc/my.cnf   
[root@mysql_52 ~]# ll /etc/my.cnf 
-rw------- 1 root root 1164 Jun 20 16:04 /etc/my.cnf

第十章 MySQL用戶密碼找回

[root@mysql_52 ~]# mysqld_safe  --skip-grant-table --user=root &
[root@mysql_52 ~]# mysql
mysql> update mysql.user set password=password('oldboy123') where user='root' and host='localhost';
mysql> flush privileges;

第十一章 MySQL注意事項

  • 爲root用戶設置比較複雜的密碼。
  • 刪除無用的mysql庫內的用戶賬號,只保留root@localhost以及[email protected]
  • 刪除默認的test數據庫
  • 增加用戶的時候,授權的權限盡量給小,允許訪問的 主機範圍最小化。
  • 登錄命令行提示不攜帶密碼,而是回車輸入密碼,使用交互式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章