1.MySQL是什么
1.1:MYSQL簡介
MySQL 是最流行的資料庫之一,是一個免費開源的關系型資料庫管理系統,但也不意味著該資料庫是完全免費的,MySQL 由瑞典 MySQL AB 公司開發,目前屬于 Oracle 公司,MySQL 適合中小型軟體,被個人用戶以及中小企業青睞,
針對不同的用戶,MySQL 分為兩個版本:
MySQL Community Server(社區版):該版本是自由下載且完全免費的,但是官方不提供技術支持,
MySQL Enterprise Server(企業版):該版本是收費的,而且不能下載,但是該版本擁有完善的技術支持(官方提供電話技術支持),
注意:MySQL Cluster 主要用于架設群服務器,需要在社區服務或企業版的基礎上使用,
MySQL 的命名機制由 3 個數字和 1 個后綴組成,例如 mysql-5.7.20:
第 1 個數字“5”是主版本號,用于描述檔案的格式,所有版本 5 的發行版都有相同的檔案夾格式,
第 2 個數字“7”是發行級別,主版本號和發行級別組合在一起便構成了發行序列號,
第 3 個數字“20”是在此發行系列的版本號,隨每次新發行的版本遞增,通常選擇已經發行的最新版本,
1.2:MySQL的特點、優勢
MySQL 資料庫管理系統具有很多的優勢,下面總結了其中幾種,
1)MySQL 是開放源代碼的資料庫
MySQL 是開放源代碼的資料庫,任何人都可以獲取該資料庫的源代碼,這就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的來使用該資料庫,MySQL 是一款可以自由使用的資料庫,
2)MySQL 的跨平臺性
MySQL 不僅可以在 Windows 系列的作業系統上運行,還可以在 UNIX、Linux 和 Mac OS 等作業系統上運行,因為很多網站都選擇 UNIX、Linux 作為網站的服務器,所以 MySQL 的跨平臺性保證了其在 Web 應用方面的優勢,雖然微軟公司的 SQL Server 資料庫是一款很優秀的商業資料庫,但是其只能在 Windows 系列的作業系統上運行,因此,MySQL 資料庫的跨平臺性是一個很大的優勢,
3)價格優勢
MySQL 資料庫是一個自由軟體,任何人都可以從 MySQL 的官方網站上下載該軟體,這些社區版本的 MySQL 都是免費試用的,即使是需要付費的附加功能,其價格也是很便宜的,相對于 Oracle、DB2 和 SQL Server 這些價格昂貴的商業軟體,MySQL 具有絕對的價格優勢,
1.3:RDBMS 術語
學習一下RDBMS的一些術語:
資料庫: 資料庫是一些關聯表的集合, 資料表: 表是資料的矩陣,在一個資料庫中的表看起來像一個簡單的電子表格, 列: 一列(資料元素) 包含了相同型別的資料, 例如郵政編碼的資料, 行:一行(=元組,或記錄)是一組相關的資料,例如一條用戶訂閱的資料, 冗余:存盤兩倍資料,冗余降低了性能,但提高了資料的安全性, 主鍵:主鍵是唯一的,一個資料表中只能包含一個主鍵,你可以使用主鍵來查詢資料, 外鍵:外鍵用于關聯兩個表, 復合鍵:復合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復合索引, 索引:使用索引可快速訪問資料庫表中的特定資訊,索引是對資料庫表中一列或多列的值進行排序的一種結構,類似于書籍的目錄, 參照完整性: 參照的完整性要求關系中不允許參考不存在的物體,與物體完整性是關系模型必須滿足的完整性約束條件,目的是保證資料的一致性,
MySQL 為關系型資料庫(Relational Database Management System), 這種所謂的"關系型"可以理解為"表格"的概念, 一個關系型資料庫由一個或數個表格組成,
表頭(header): 每一列的名稱;
列(col): 具有相同資料型別的資料的集合;
行(row): 每一行用來描述某條記錄的具體資訊;
值(value): 行的具體資訊, 每個值必須與該列的資料型別相同;
鍵(key): 鍵的值在當前列中具有唯一性,
2.MySQL 安裝
2.1:Linux/UNIX 上安裝 MySQL
Linux平臺上推薦使用RPM包來安裝Mysql,MySQL AB提供了以下RPM包的下載地址:
MySQL - MySQL服務器,你需要該選項,除非你只想連接運行在另一臺機器上的MySQL服務器, MySQL-client - MySQL 客戶端程式,用于連接并操作Mysql服務器, MySQL-devel - 庫和包含檔案,如果你想要編譯其它MySQL客戶端,例如Perl模塊,則需要安裝該RPM包, MySQL-shared - 該軟體包包含某些語言和應用程式需要動態裝載的共享庫(libmysqlclient.so*),使用MySQL, MySQL-bench - MySQL資料庫服務器的基準和性能測驗工具,
安裝前,我們可以檢測系統是否自帶安裝 MySQL:
rpm -qa | grep mysql
如果你系統有安裝,那可以選擇進行卸載:
rpm -e mysql // 普通洗掉模式 rpm -e --nodeps mysql // 強力洗掉模式,如果使用上面命令洗掉時,提示有依賴的其它檔案,則用該命令可以對其進行強力洗掉
安裝 MySQL:
接下來我們在 Centos7 系統下使用 yum 命令安裝 MySQL,需要注意的是 CentOS 7 版本中 MySQL資料庫已從默認的程式串列中移除,所以在安裝前我們需要先去官網下載 Yum 資源包,下載地址為:https://dev.mysql.com/downloads/repo/yum/
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update yum install mysql-server
權限設定:
chown mysql:mysql -R /var/lib/mysql
初始化 MySQL:
mysqld --initialize
啟動 MySQL:
systemctl start mysqld
查看 MySQL 運行狀態:
systemctl status mysqld
注意:如果我們是第一次啟動 mysql 服務,mysql 服務器首先會進行初始化的配置
此外,你也可以使用 MariaDB 代替,MariaDB 資料庫管理系統是 MySQL 的一個分支,主要由開源社區在維護,采用 GPL 授權許可,開發這個分支的原因之一是:甲骨文公司收購了 MySQL 后,有將 MySQL 閉源的潛在風險,因此社區采用分支的方式來避開這個風險,
MariaDB的目的是完全兼容MySQL,包括API和命令列,使之能輕松成為MySQL的代替品
yum install mariadb-server mariadb
mariadb資料庫的相關命令是:
systemctl start mariadb #啟動MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重啟MariaDB
systemctl enable mariadb #設定開機啟動
2.2:驗證 MySQL 安裝
在成功安裝 MySQL 后,一些基礎表會表初始化,在服務器啟動后,你可以通過簡單的測驗來驗證 MySQL 是否作業正常,
使用 mysqladmin 工具來獲取服務器狀態:
使用 mysqladmin 命令來檢查服務器的版本, 在 linux 上該二進制檔案位于 /usr/bin 目錄,在 Windows 上該二進制檔案位于C:\mysql\bin
[root@host]# mysqladmin --version
linux上該命令將輸出以下結果,該結果基于你的系統資訊:
mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386
如果以上命令執行后未輸出任何資訊,說明你的Mysql未安裝成功
2.3:使用 MySQL Client(Mysql客戶端) 執行簡單的SQL命令
你可以在 MySQL Client(Mysql客戶端) 使用 mysql 命令連接到 MySQL 服務器上,默認情況下 MySQL 服務器的登錄密碼為空,所以本實體不需要輸入密碼,
命令如下:
[root@host]# mysql
以上命令執行后會輸出 mysql>提示符,這說明你已經成功連接到Mysql服務器上,你可以在 mysql> 提示符執行SQL命令:
mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.13 sec)
2.4:Mysql安裝后需要做的
Mysql安裝成功后,默認的root用戶密碼為空,你可以使用以下命令來創建root用戶的密碼:
[root@host]# mysqladmin -u root password "new_password";
現在你可以通過以下命令來連接到Mysql服務器:
[root@host]# mysql -u root -p
Enter password:123456
注意:在輸入密碼時,密碼是不會顯示了,你正確輸入即可
2.5:MySQL 用戶設定
如果你需要添加 MySQL 用戶,你只需要在 mysql 資料庫中的 user 表添加新用戶即可,
以下為添加用戶的的實體,用戶名為guest,密碼為guest123,并授權用戶可進行 SELECT, INSERT 和 UPDATE操作權限:
root@host# mysql -u root -p Enter password:123456 mysql> use mysql; Database changed mysql> INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y', 'Y'); Query OK, 1 row affected (0.20 sec) mysql> FLUSH PRIVILEGES; Query OK, 1 row affected (0.01 sec) mysql> SELECT host, user, password FROM user WHERE user = 'guest'; +-----------+---------+------------------+ | host | user | password | +-----------+---------+------------------+ | localhost | guest | 6f8c114b58f2ce9e | +-----------+---------+------------------+ 1 row in set (0.00 sec)
在添加用戶時,請注意使用MySQL提供的 PASSWORD() 函式來對密碼進行加密, 你可以在以上實體看到用戶密碼加密后為: 6f8c114b58f2ce9e.
注意:在 MySQL5.7 中 user 表的 password 已換成了authentication_string,
注意:password() 加密函式已經在 8.0.11 中移除了,可以使用 MD5() 函式代替,
注意:在注意需要執行 FLUSH PRIVILEGES 陳述句, 這個命令執行后會重新載入授權表,
如果你不使用該命令,你就無法使用新創建的用戶來連接mysql服務器,除非你重啟mysql服務器,
你可以在創建用戶時,為用戶指定權限,在對應的權限列中,在插入陳述句中設定為 'Y' 即可,用戶權限串列如下:
Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv
另外一種添加用戶的方法為通過SQL的 GRANT 命令,以下命令會給指定資料庫TUTORIALS添加用戶 yhh ,密碼為 123456
root@host# mysql -u root -p Enter password:******* mysql> use mysql; Database changed mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON TUTORIALS.* -> TO 'yhh'@'localhost' -> IDENTIFIED BY '123456';
以上命令會在mysql資料庫中的user表創建一條用戶資訊記錄,
注意: MySQL 的SQL陳述句以分號 (;) 作為結束標識,
2.6:/etc/my.cnf 檔案配置
一般情況下,你不需要修改該組態檔,該檔案默認配置如下:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock [mysql.server] user=mysql basedir=/var/lib [safe_mysqld] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
在組態檔中,你可以指定不同的錯誤日志檔案存放的目錄,一般你不需要改動這些配置
2.7:資料庫命令列操作
1.查看所有資料庫 show databases; 2.切換資料庫 use [資料庫名]; 3.創建資料庫 create database [資料庫名] ; 4.洗掉資料庫 drop database [資料庫名]; 5.對表的操作 查看所有表 show tables; 6.創建表 create table [表名](欄位1 型別1 約束1,欄位2 型別2 約束2); 7.洗掉表 drop table [表名] 8.修改表名字 rename table [表名] to [新名]
2.8:對欄位的操作
9.查詢欄位(表結構) desc [表名] 10.增加表的欄位 alter table [表明]add [欄位名 型別 約束] 11.洗掉欄位 alter table [表名]drop[欄位名] 12.修改欄位 alter table [表名] change [欄位名] [新欄位名 型別 約束] ① 、alter table students change id id int; ②、alter table students drop primary key;
2.9:對資料的操作
13.增加資料 插入一個全欄位 insert into students values(0,’xxx’,31,1) 插入多個全欄位 insert into students values(0,’liudehua’,24,0),(0,’yangmi’,31,0) 插入一個部分欄位 insert into students(id,name) values(0,’zhaoliying’) 插入多個部分欄位 insert into students(id,name) values(0,’liushishi’),(0,’linzhiling’) 14.洗掉某一條 delete from students where id=1; 15.清空 delete from students; 16.修改資料 update student set name=’xxx’ where name=’liudehua’ 17.查找所有資料 select * from students 18.資料庫備份和恢復 備份: sudo mysqldump –u資料庫名 –p資料庫密碼 備份檔案夾名> ~/Desktop/檔案夾名back.sql 恢復:進入mysql先要創建一個新的資料庫,注意字符集 然后退出mysql sudo mysql –u資料庫名 –p資料庫密碼 < ~/Desktop/備份檔案夾名back.sql
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5965.html
標籤:Python
上一篇:PHP獲取客戶端IP
