37、mysql初識

來源:互聯網
上載者:User

標籤:python   char   ima   兩種   開啟   應用軟體   revoke   width   關係   

之前我們寫代碼需要存取資訊時用的是檔案可是用檔案存取資料非常局限,今天我們將走進一個新的世界mysql

 

一、資料庫由來

 

之前所學,資料要永久儲存,比如使用者註冊的使用者資訊,都是儲存於檔案中,而檔案只能存在於某一台機器上。如果我們不考慮從檔案中讀取資料的效率問題,並且假設我們的程式所有的組件都運行在一台機器上,那麼用檔案存取資料,並沒有問題,但需要考慮的問題是:程式的執行效率依賴於承載它的硬體,而一台機器機器的效能總歸是有限的,受限於目前的硬體水平,垂直擴充是有極限的。於是我們只能通過水平擴充來增強我們系統的整體效能,這就需要我們將程式的各個組件分佈於多台機器去執行。需要注意的是,雖然我們將程式的各個組件分布到各台機器,但各組件仍然是一個整體,言外之意,所有組件的資料還是要共用的。但每台機器上的組件都只能操作原生檔案,這就導致了資料必然不一致。

 

於是我們想到了將資料與應用程式分離:把檔案存放於一台機器,然後將多台機器通過網路去訪問這台機器上的檔案,即共用這台機器上的檔案,共用則意味著競爭,會發生資料不安全,需要加鎖處理。。。。為了遠端存取並處理這台共用機器上的檔案,我們必須為我們的程式額外寫一段代碼,完成如下功能:

1、遠端連線

2、開啟檔案

3、讀寫(加鎖)

4、關閉檔案

 

我們寫任何程式都需要有這段代碼,於是我們提取這段代碼,寫成一個專門的處理軟體,這就是mysql等資料庫管理軟體的由來,但mysql解決的不僅僅是資料共用的問題,還有查詢效率,安全性等一系列問題,總之,把程式員從資料管理中解脫出來,專註於自己的程式邏輯的編寫。

 

 

二、資料庫概述

1、 什麼是資料(Data) 

描述事物的符號記錄稱為資料,描述事物的符號既可以是數字,也可以是文字、圖片,映像、聲音、語言等,資料由多種表現形式,它們都可以經過數字化後存入電腦,在電腦中描述一個事物,就需要抽取這一事物的典型特徵,組成一條記錄,就相當於檔案裡的一行內容,如:

1 egon,male,18,1999,山東,電腦系,2017,oldboy

單純的一條記錄並沒有任何意義,如果我們按逗號作為分隔,依次定義各個欄位的意思

1 name,sex,age,birth,born_addr,major,entrance_time,school #欄位2 egon,male,18,1999,山東,電腦系,2017,oldboy #記錄

這樣我們就可以瞭解egon,性別為男,年齡18歲,出生於1999年,出生地為山東,2017年考入老男孩電腦系

2 、什麼是資料庫(DataBase,簡稱DB)

資料庫即存放資料的倉庫,只不過這個倉庫是在電腦存放裝置上,而且資料是按一定的格式存放的

過去人們將資料存放在檔案櫃裡,現在資料量龐大,已經不再適用

資料庫是長期存放在電腦內、有組織、可共用的資料即可。

資料庫中的資料按一定的資料模型組織、描述和儲存,具有較小的冗餘度、較高的資料獨立性和易擴充性,並可為各種 使用者共用

3 、什麼是資料庫管理系統(DataBase Management System 簡稱DBMS)

在瞭解了Data與DB的概念後,如何科學地組織和儲存資料,如何高效擷取和維護資料成了關鍵,這就用到了一個系統軟體---資料庫管理系統

如MySQL、Oracle、SQLite、Access、MS SQL Server

mysql主要用於大型門戶,例如搜狗、新浪等,它主要的優勢就是開放原始碼,因為開放原始碼這個資料庫是免費的,他現在是甲骨文公司的產品。
oracle主要用於銀行、鐵路、飛機場等。該資料庫功能強大,軟體費用高。也是甲骨文公司的產品。
sql server是微軟公司的產品,主要應用於大中型企業,如聯想、方正等。

4 、資料庫伺服器、資料管理系統、資料庫、表與記錄的關係(重點理解!!!)

記錄:1 劉海龍  324245234 22(多個欄位的資訊組成一條記錄,即檔案中的一行內容)

表:student,scholl,class_list(即檔案)

資料庫:oldboy_stu(即檔案夾)

資料庫管理系統:如mysql(是一個軟體)

資料庫伺服器:一台電腦(對記憶體要求比較高)

總結:

1)資料庫伺服器---運行--->資料庫管理軟體

2)資料庫管理軟體--->管理--->資料庫

3)資料庫---組織--->表,即檔案夾---組織--->檔案

4)表---存放--->多條記錄,即檔案---存放--->多行內容

5 、資料庫管理技術的發展曆程(瞭解)

1)人工管理階段

20世紀50年代中期以前,電腦主要用於科學計算。

當時的硬體水平:外存只有紙帶、卡片、磁帶,沒有磁碟等直接存取的存放裝置

當時的軟體狀況:沒有作業系統,沒有管理資料的軟體,資料的處理方式是批處理。

人工管理資料具有以下特點:

1 資料不儲存:電腦主要用於科學計算,資料臨時用,臨時輸入,不儲存

2 應用程式管理資料:資料要有應用程式自己管理,應用程式需要處理資料的邏輯+物理結構,開發負擔很重

3 資料不共用:一組資料只對應一個程式,多個程式之間涉及相同資料時,必須各自訂,造成資料大量冗餘

4 資料不具有獨立性:資料的邏輯結構或物理結構發生變化後,必須對應用程式做出相應的修改,開發負擔進一步加大

2)檔案系統階段

20世紀50年代後期到60年代中期

硬體水平:有了磁碟、磁鼓等可直接存取的存放裝置

軟體水平:有了作業系統,並且作業系統中已經有了專門的資料管理軟體,即檔案系統;處理方式上不僅有了批處理,而且能夠聯機即時處理

檔案系統管理資料具有以下優點:

1 資料可以長期儲存:電腦大量用於資料處理,因而資料需要長期儲存,進行增刪改查操作

2 由檔案系統管理資料:檔案系統這個軟體,把資料群組織成相對獨立的資料檔案,利用按檔案名稱,按記錄進行存取。實現了記錄內的結構性,但整體無結構。並且程式與資料之間由檔案系統提供存取方法進行轉換,是應用程式與資料之間有了一定的獨立性,程式員可以不必過多考慮物理細節。

檔案系統管理資料具有以下缺點:

1 資料共用性差,冗餘度大:一個檔案對應一個應用程式,不同應用有相同資料時,也必須建立各自的檔案,不能共用相同的資料,造成資料冗餘,浪費空間,且相同的資料重複儲存,各自管理,容易造成資料不一致性

2 資料獨立性差:一旦資料的邏輯結構改變,必須修改應用程式,修改檔案結構的定義。應用程式的改變,也將引起檔案的資料結構的改變。因此資料與程式之間缺乏獨立性。可見,檔案系統仍然是一個不具有彈性的無結構的資料集合,即檔案之間是孤立的,不能反映現實世界事物之間的記憶體聯絡。

3) 資料系統階段

20世紀60年代後期以來,電腦用於管理的規模越來越大,應用越來越廣泛,資料量急劇增長,同時多種應用,多種語言互相覆蓋地共用資料結合要求越來越強烈

硬體水平:有了大容量磁碟,硬體架構下降

軟體水平:軟體價格上升(開發效率必須提升,必須將程式員從資料管理中解放出來),分布式的概念盛行。

資料庫系統的特點:

1 資料結構化(如odboy_stu)

2 資料共用,冗餘度低,易擴充

3 資料獨立性高

4 資料由DBMS統一管理和控制

  a:資料的安全性保護

  b:資料的完整性檢查

  c:並發控制

  d:資料庫恢複

 

 

三、mysql介紹

 

MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關聯式資料庫管理系統) 應用軟體之一。

 

1、mysql

 

mysql就是一個socekt服務端
用戶端軟體
  mysql內建
  python模組

 

2、其他類型的資料庫

 

sqllite,db2,oracle,access,sql server,MySQL
分兩大類:
  關係型:上面這幾種,注意:sql語句通用
  非關係型:mongodb,redis,memcache

 

 

四、下載安裝

1、下載

官網:http://dev.mysql.com/downloads/mysql/

下載下來的直接是一個壓縮包

2、解壓

如果想要讓MySQL安裝在指定目錄,那麼就將解壓後的檔案夾移動到指定目錄,如:D:\mysql-5.7.19-winx64

3、初始化

 

cd D:\mysql-5.7.19-winx64\bin mysqld --initialize-insecure

 

注意:以管理員權限運行上述命令

4、啟動MySQL服務

# 進入可執行檔目錄cd D:\mysql-5.7.19-winx64\bin # 啟動MySQL服務mysqld

5、啟動MySQL用戶端並串連MySQL服務

由於初始化時使用的【mysqld --initialize-insecure】命令,其預設未給root賬戶設定密碼

 

# 進入可執行檔目錄cd D:\mysql-5.7.19-winx64\bin # 串連MySQL伺服器mysql -u root -p # 提示請輸入密碼,直接斷行符號

 

 

 

到此為止,MySQL服務端已經安裝成功並且用戶端已經可以串連上,以後再操作MySQL時,只需要重複上述4、5步驟即可。但是,在4、5步驟中重複的進入可執行檔目錄比較繁瑣,如想日後操作簡便,可以做如下操作。

1)添加環境變數

【右鍵電腦】--》【屬性】--》【進階系統設定】--》【進階】--》【環境變數】--》【在第二個內容框中找到 變數名為Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中】

 

這樣以後就省去了cd 檔案夾步驟

2)將MySQL服務製作成windows服務

上一步解決了一些問題,但不夠徹底,因為在執行【mysqd】啟動MySQL伺服器時,當前終端會被hang住,那麼做一下設定即可解決此問題:

注意:--install前,必須用mysql啟動命令的絕對路徑

 

# 製作MySQL的Windows服務,在終端執行此命令:"D:\mysql-5.7.19-winx64\bin\mysqld" --install # 移除MySQL的Windows服務,在終端執行此命令:"D:\mysql-5.7.19-winx64\bin\mysqld" --remove

 

註冊成服務之後,以後再啟動和關閉MySQL服務時,僅需執行如下命令:

# 啟動MySQL服務net start mysql # 關閉MySQL服務net stop mysql

 

五、mysql軟體基本管理

1. 啟動查看

[[email protected] ~]# systemctl start mariadb #啟動[[email protected] ~]# systemctl enable mariadb #設定開機自啟動Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.[[email protected] ~]# ps aux |grep mysqld |grep -v grep #查看進程,mysqld_safe為啟動mysql的指令檔,內部調用mysqld命令mysql     3329  0.0  0.0 113252  1592 ?        Ss   16:19   0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usrmysql     3488  0.0  2.3 839276 90380 ?        Sl   16:19   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock[[email protected] ~]# netstat -an |grep 3306 #查看連接埠tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN  [[email protected] ~]# ll -d /var/lib/mysql #許可權不對,啟動不成功,注意user和groupdrwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql
 You must reset your password using ALTER USER statement before executing this statement.

2. 登入,設定密碼

初始狀態下,管理員root,密碼為空白,預設只允許從本機登入localhost設定密碼[[email protected] ~]# mysqladmin -uroot password "123"        設定初始密碼 由於原密碼為空白,因此-p可以不用‘windows下密碼不用引號‘[[email protected] ~]# mysqladmin -uroot -p"123" password "456"        修改mysql密碼,因為已經有密碼了,所以必須輸入原密碼才能設定新密碼命令格式:[[email protected] ~]# mysql -h172.31.0.2 -uroot -p456[[email protected] ~]# mysql -uroot -p[[email protected] ~]# mysql                    以root使用者登入本機,密碼為空白

3. 忘記密碼

方法一:刪除授權庫mysql,重新初始化

[[email protected] ~]# rm -rf /var/lib/mysql/mysql #所有授權資訊全部丟失!!![[email protected] ~]# systemctl restart mariadb[[email protected] ~]# mysql

方法二:啟動時,跳過授權庫

[[email protected] ~]# vim /etc/my.cnf    #mysql主設定檔[mysqld]skip-grant-table[[email protected] ~]# systemctl restart mariadb[[email protected] ~]# mysqlMariaDB [(none)]> update mysql.user set password=password("123") where user="root" and host="localhost";MariaDB [(none)]> flush privileges;MariaDB [(none)]> \q[[email protected] ~]# #開啟/etc/my.cnf去掉skip-grant-table,然後重啟[[email protected] ~]# systemctl restart mariadb[[email protected] ~]# mysql -u root -p123 #以新密碼登入

windows平台下,5.7版本mysql,破解密碼的兩種方式:

 方式一 方式二

4. 在windows下,為mysql服務指定設定檔

#在mysql的解壓目錄下,建立my.ini,然後配置[mysqld];skip-grant-tablesport=3306character_set_server=utf8#解壓的目錄basedir=E:\mysql-5.7.19-winx64#data目錄datadir=E:\my_data #在mysqld --initialize時,就會將初始資料存入此處指定的目錄,在初始化之後,啟動mysql時,就會去這個目錄裡找資料[client]port=3306default-character-set=utf8
 

六、初識sql語句

有了mysql這個資料庫軟體,就可以將程式員從對資料的管理中解脫出來,專註於對程式邏輯的編寫

mysql服務端軟體即mysqld幫我們管理好檔案夾以及檔案,前提是作為使用者的我們,需要下載mysql的用戶端,或者其他模組來串連到mysqld,然後使用mysql軟體規定的文法格式去提交自己命令,實現對檔案夾或檔案的管理。該文法即sql語句

 View Code 

七、初識授權

#建立使用者create user ‘egon‘@‘1.1.1.1‘ identified by ‘123‘;create user ‘egon‘@‘192.168.1.%‘ identified by ‘123‘;create user ‘egon‘@‘%‘ identified by ‘123‘;#授權:對檔案夾,對檔案,對檔案某一欄位的許可權grant select,insert,update,delete on db1.* to ‘alex’@‘%’; #對檔案夾-》資料庫grant all privileges on db1.* to ‘alex’@‘%’;      #(all不包含grant許可權)revoke select on db1.* to ‘alex‘@‘%‘;

 

37、mysql初識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.