理論多,指令多 問的都是理論知識 1.什麼是資料庫 存儲資料的倉庫, 2.主流的三款資料庫 mysql redis mongodb 3.資料庫的模型 4.常見的資料服務軟體和廠商 5.mysql 的簡介和發展過程
一。mysql資料庫 搭建資料庫伺服器 mysql的資料庫類型 部署一台資料庫,提供資料庫存儲的服務? 生産環境下是用硬體主機和雲主機 伺服器的主流的作業系統 unix linux Windows
安裝軟體包軟體包來源, 官網下載下傳 最新的穩定版,主版本和次版本 偶數和奇數 修改次數 作業系統自帶的軟體 軟體包的封包類型(RPM 源碼) 源碼是可以自定義配置和安裝 ,安裝解除安裝友善 rpm -ivh rpm -e ,但是鑰解決依賴關系 RPM是封裝好的,不能定義
開源軟體和商業軟體 使用的軟體版本 開源不等于免費,開源軟體可以進行二次開發。一般公司都是使用開源軟體 提供資料庫服務的軟體,apache tomcat nginx mysql SQL.server DB2 Oracle 是關系型資料庫RDBMS 按照一定的規則進行存儲資料 Redis Mongodb Memcached 是非關系型資料庫 NOSQL 不需要按照一定的規則進行存儲資料 商業軟體是要付費
mysql 的特點————用c語言開放 開源并能夠跨平台 —— unix linux Windows 支援主流的程式設計語言————unix linux windows 可移植好——系統隻有c的運作環境就可以運作 LNMP LAMP Mysql Mongodb 資料庫的服務通常都是跟網站的服務一起使用 資料庫都是存儲什麼樣的資料?? 現在主流網站 購物網站 遊戲網站 視訊網站 論壇網站 金融網站
一。安裝mysql
mysql 和mraidb 是同一款資料庫軟體 請看mysql的起源和發展
如果安裝了mariadb 就不能安裝mysql 就會出現沖突 都是提供mysql 服務的 ,配置檔案和存儲資料目錄都是一樣 如果mariadb-server 應該先把服務給先停了服務,才可以進行解除安裝操作 [[email protected] ~]# rpm -qa | grep mariadb mariadb-libs-5.5.56-2.el7.x86_64 [[email protected] ~]# yum list | grep -i mariadb mariadb-libs.x86_64 1:5.5.56-2.el7 @anaconda/7.4 mariadb.x86_64 1:5.5.56-2.el7 dev mariadb-bench.x86_64 1:5.5.56-2.el7 dev mariadb-devel.i686 1:5.5.56-2.el7 dev mariadb-devel.x86_64 1:5.5.56-2.el7 dev mariadb-libs.i686 1:5.5.56-2.el7 dev mariadb-server.x86_64 1:5.5.56-2.el7 dev mariadb-test.x86_64 1:5.5.56-2.el7 dev
tar -xf 和 tar -xvf 的差別 就是後者可以顯示解包的過程
[[email protected] ~]# rpm -e --nodeps Cariadb-server ————強制解除安裝軟體以及依賴包 安裝裝不上的原因 配置檔案和參數 資料存儲目錄?? [[email protected] ~]# rm -rf /etc/my.cnf [[email protected] ~]# rm -rf /var/lib/mysql [[email protected] ~]# rpm -e --nodeps mariadb-server [[email protected] ~]# rpm -e --nodeps mariadb-libs 警告:檔案 /etc/my.cnf: 移除失敗: 沒有那個檔案或目錄 [[email protected] ~]# rpm -qa | grep -i mariadb
安裝mysql 軟體包的步驟 [[email protected] ~]# rpm -Uvh mysql-community-*.rpm ————U是更新安裝 警告:mysql-community-client-5.7.17-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY 錯誤:依賴檢測失敗: perl(JSON) 被 mysql-community-test-5.7.17-1.el7.x86_64 需要————提示依賴關系 [[email protected] ~]# rpm -q perl-JSON 未安裝軟體包 perl-JSON [[email protected] ~]# yum -y install perl-JSON
[[email protected] ~]# rpm -Uvh mysql-community-*.rpm ————U是更新安裝。警告:mysql-community-client-5.7.17-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY 準備中... ################################# [100%] 正在更新/安裝... 1:mysql-community-common-5.7.17-1.e################################# [ 9%] 2:mysql-community-libs-5.7.17-1.el7################################# [ 18%] 3:mysql-community-client-5.7.17-1.e################################# [ 27%] 4:mysql-community-server-5.7.17-1.e################################# [ 36%] 5:mysql-community-devel-5.7.17-1.el################################# [ 45%] 6:mysql-community-embedded-5.7.17-1################################# [ 55%] 7:mysql-community-embedded-devel-5.################################# [ 64%] 8:mysql-community-test-5.7.17-1.el7################################# [ 73%] 9:mysql-community-libs-compat-5.7.1################################# [ 82%] 10:mysql-community-embedded-compat-5################################# [ 91%] 11:mysql-community-minimal-debuginfo################################# [100%] 這個百分比是前面的已經完成了一部分 更新安裝的好處?? 1.可以增加新功能 2.解決舊版本的漏洞的問題和BUG 3.增加穩定性和對系統的支援 4.安裝的體積更大,需要更多的磁盤 5.運作時需要暫用更多的CPU和記憶體 [[email protected] ~]# rpm -qa | grep mysql ————檢視已經安裝的軟體清單
mysql-community-client-5.7.17-1.el7.x86_64mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64 mysql-community-test-5.7.17-1.el7.x86_64 mysql-community-common-5.7.17-1.el7.x86_64 mysql-community-devel-5.7.17-1.el7.x86_64 mysql-community-libs-compat-5.7.17-1.el7.x86_64 mysql-community-libs-5.7.17-1.el7.x86_64 mysql-community-embedded-5.7.17-1.el7.x86_64 mysql-community-embedded-compat-5.7.17-1.el7.x86_64 mysql-community-embedded-devel-5.7.17-1.el7.x86_64
mysql-community-server-5.7.17-1.el7.x86_64 修改配置檔案[[email protected] ~]# ls /var/lib/mysql——預設的資料存儲的目錄 沒有啟動,目錄為空
啟動服務[email protected] ~]# systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: inactive (dead) Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html [[email protected] ~]# systemctl start mysqld————啟動速度比較慢,因為要建立目錄
[[email protected] ~]# systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since 二 2018-07-10 10:45:58 CST; 24s ago Docs: man:mysqld(8) [[email protected] ~]# ls /var/lib/mysql ————首次建立就會建立這些目錄 auto.cnf ib_buffer_pool mysql public_key.pem ca-key.pem ibdata1 mysql.sock server-cert.pem ca.pem ib_logfile0 mysql.sock.lock server-key.pem client-cert.pem ib_logfile1 performance_schema sys client-key.pem ibtmp1 private_key.pem
[[email protected] ~]# systemctl enable mysqld————開機自動開起
繼續安裝下一台伺服器
檢視服務資訊 端口資訊————3306 程序資訊——mysqld
ps aux | grep httpd???
[[email protected] ~]# ps -C mysqld————檢視程序PID TTY TIME CMD 4240 ? 00:00:00 mysqld
[[email protected] ~]# systemctl stop mysqld——停掉服務 [[email protected] ~]# ps -C mysqld————再次檢視程序PID TTY TIME CMD
[[email protected] ~]# ss -ntulp | grep mysqld ————檢視端口狀态tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=4529,fd=18))
mysql 的相關的參數 1.主配置檔案 /etc/my.cnf 2.資料目錄 /var/log/mysql 3.端口 3306 4.程序 mysqld 5.傳輸協定 tcp 6.所屬者 mysql 7.所屬組 mysql把資料存儲到資料庫伺服器上的過程 1.連接配接資料庫伺服器 1.1用指令行來連接配接 mysql -u使用者名 -h ip -p 密碼 第一次是用初始密碼連接配接 [[email protected] ~]# ls /var/log/mysqld.log /var/log/mysqld.log [[email protected] ~]# grep password /var/log/mysqld.log ————首次建立資料庫的密碼儲存在日志上
2018-07-10T02:45:38.706224Z 1 [Note] A temporary password is generated for [email protected]: *-ZPqB 密碼都是随機生成 [[email protected] ~]# mysql -hlocalhost -uroot -p'*-ZPqB
沒有建立使用者時,隻能通過本機進入資料庫,隻有root使用者 連接配接資料庫的工具 1.mysql 指令 : 環境切換 看狀态 退出控制 2.sql指令 : 資料庫的定義 查詢 操縱 授權語句 注意事項 指令不區分字母大少寫 (密碼 變量值除外) 每一條的SQL指令是以;進行結束或者分割 不支援Tab鍵 ,純手打輸入 \c可以廢除目前操作錯誤的指令
常用的SQL環境管理指令 DDL 的資料定義語句:creat alter drop DML的資料操作語句 : insert update dalete DCL的資料控制語句 : grant revoke DTL 的資料事物語句 : commit rollback sovepoint
庫管理指令 show databases; 展示庫 creat database 庫名; 建立庫 use 庫名; 進入庫 select database (); 展示所在的目前庫 show tables; 顯示已有的表 drop database 庫名; 删除庫
資料庫的命名規則 可以使用數字 字母 下劃線 但是不可以使用純數字 區分大小寫,具有唯一性 不可以使用指令關鍵字 和特殊字元
表的管理指令 建立指定名稱的表 -CREATE TABLE 庫名。表名 字段名1 字段類型(寬度) 限制條件; 字段名2字段類型(寬度) 限制條件; ....... 字段名N字段類型(寬度) 限制條件;