MySQL 官網(wǎng):https://www.mysql.com/
- MySQL 常見版本
? MySQL Community Server 社區(qū)版本愉棱,開源免費(fèi)银亲,但不提供官方技術(shù)支持。
? MySQL Enterprise Edition 企業(yè)版本,需付費(fèi)湿故,可以試用 30 天蟆炊。
? MySQL Cluster 集群版稽莉,開源免費(fèi)∩辏可將幾個(gè) MySQL Server 封裝成一個(gè) Server污秆。
? MySQL Cluster CGE 高級(jí)集群版劈猪,需付費(fèi) - MySQL 安裝部署
MySQL:MySQL 客戶端程序
MySQL-Server:MySQL 服務(wù)器端程序
源代編譯安裝:
編譯工具:configure、cmake良拼、make
數(shù)據(jù)庫(kù)常用的配置選項(xiàng)
-DCMAKE_INSTALL_PREFIX=/PREFIX ----指定安裝路徑(默認(rèn)的就是/usr/local/mysql)
-DMYSQL_DATADIR=/data/mysql ----mysql 的數(shù)據(jù)文件路徑
-DSYSCONFDIR=/etc ----配置文件路徑
-DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用 INNOBASE 存儲(chǔ)引擎
-DWITH_READLINE=1 ----支持批量導(dǎo)入 mysql 數(shù)據(jù)
-DWITH_SSL=system ----mysql 支持 ssl
-DWITH_ZLIB=system ----支持壓縮存儲(chǔ)
-DMYSQL_TCP_PORT=3306 ----默認(rèn)端口 3306
-DENABLED_LOCAL_INFILE=1 ----啟用加載本地?cái)?shù)據(jù)
-DMYSQL_USER=mysql ----指定 mysql 運(yùn)行用戶
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默認(rèn)套接字文件路徑
-DEXTRA_CHARSETS=all ----是否支持額外的字符集
-DDEFAULT_CHARSET=utf8 ----默認(rèn)編碼機(jī)制
-DWITH_DEBUG=0 ----DEBUG 功能設(shè)置
常見資料:
服務(wù):mysqld 端口:3306
主配置文件:/etc/my.cnf 初始化腳本:mysql_install_db
啟動(dòng)命令:mysqld_safe 數(shù)據(jù)目錄 :/var/lib/mysql
套接字文件:/var/lib/mysql/mysql.sock
進(jìn)程文件:/var/run/mysqld/mysqld.pid
MySQL 登錄及退出命令:
設(shè)置密碼:mysqladmin -uroot password ‘123456’
登錄:mysql -u 用戶名 -p 密碼 -P 端口 -S 套接字文件
-p 用戶密碼
-h 登陸位置(主機(jī)名或 ip 地址)
-P 端口號(hào)(3306 改了就不是了)
-S 套接字文件(/var/lib/mysql/mysql.sock)
退出命令:exit 或 ctrl+d - MySQL 管理命令
- 創(chuàng)建登錄用戶
mysql>create user zhangsan@‘%’ identified by ‘123456’;
%:指任意的遠(yuǎn)程終端 - 測(cè)試用戶登錄
yum -y install mysql
mysql -uzhangsan -p123456 -h 192.168.88.10
- 用戶為自己更改密碼
mysql>set password=password(‘123456’); - root 用戶為其他用戶找回密碼
mysql>set password for atguigu@‘%’=password(‘123123’); - root 找回自己的密碼并修改
關(guān)閉數(shù)據(jù)庫(kù)战得,修改主配置文件(/etc/my.cnf)添加:skip-grant-tables
vim /etc/my.cnf
skip-grant-tables
啟動(dòng)數(shù)據(jù)庫(kù),空密碼登錄并修改密碼
update mysql.user set password=password(‘新密碼’) where user=’root’;
刪除 skip-grant-tables,重啟數(shù)據(jù)庫(kù)驗(yàn)證新密碼
- 創(chuàng)建查詢數(shù)據(jù)庫(kù)
mysql>create database web;
mysql>show databases; - 創(chuàng)建數(shù)據(jù)表
Mysql>use web;
選擇要使用的數(shù)據(jù)庫(kù)
Mysql>create table a1 (id int ,name char(30));
創(chuàng)建 a1 表庸推,并添加 id 和 name 字段以及類型
Mysql>describe a1;
查看表結(jié)構(gòu)(字段)
復(fù)雜一點(diǎn)的
Mysql>create table a2 (
->id int unsigned not null auto_increment, #字段要求為正數(shù)常侦、且自增長(zhǎng)、主鍵
->name char(30) not null default ‘’, #字符型長(zhǎng)度 30 字節(jié)贬媒,默認(rèn)值為空格
->age int not null default 0, #字段默認(rèn)值為 0
->primary key (id)); #設(shè)置 id 為主鍵
Mysql> describe a2;
- 插入數(shù)據(jù)
Mysql>insert into a2 (id,name,age) values (1,‘zhangsan’,21)聋亡; #指明插入字段和數(shù)據(jù)
Mysql>select * from a2;
Mysql>insert into a2 values (2,‘lisi’,20); #按順序插入指定字段
Mysql>insert into a2 values (3,‘wangwu’)掖蛤; #未聲明年齡
Mysql>insert into a2 values (4,‘zhao’,19)杀捻,(5,‘sun’,25); #插入多條數(shù)據(jù) - 將表 a2 的數(shù)據(jù)復(fù)制到表 a1
Mysql>select * from a1;
Mysql>insert into a1 (id,name) select id,name from a2;
查詢 a2 值蚓庭,并寫入到 a1
Mysql>select * from a1;
- 刪除數(shù)據(jù)庫(kù)
Mysql>drop database abc致讥;
Mysql>show databases; - 刪除數(shù)據(jù)表
Mysql>drop table a1;
Mysql>show table; - 刪除表里的數(shù)據(jù)記錄
Mysql>delete from a2 where id=5; #刪除 id=5 的記錄
Mysql>delete from a2 where between 23 and 25; #刪除年齡在 23-25 之間的
注:庫(kù)和表的刪除用 drop,記錄刪除用 delete - 修改表中的數(shù)據(jù)
Mysql>update a2 set age=21 where id=3; - 修改數(shù)據(jù)表的名稱
Mysql>alter table a2 rename a1; - 修改數(shù)據(jù)表的字段類型
Mysql>describe a1;
Mysql>alter table a1 modify name char(50);
Mysql>describe a1; - 修改數(shù)據(jù)表的字段類型詳情
Mysql>describe a1;
Mysql>alter table a1 change name username char(50) not null default ‘’;
Mysql>describe a1; - 添加字段
Mysql>describe a1;
Mysql>alter table a1 add time datetime;
Mysql>describe a1;
添加位置默認(rèn)在末尾
Mysql>alter table a1 add birthday year first; #添加字段到第一列
Mysql>alter table a1 add sex nchar(1) after id; #添加到指定字段后
- 刪除字段
Mysql>alter table a1 drop birthday; - Mysql 用戶授權(quán)
授予用戶全部權(quán)限
Mysql>select user from mysql.user;
Mysql>grant all on aa.a1 to atguigu@‘%’器赞; #給已存在用戶授權(quán)
Mysql>grant all on aa.a1 to abc@‘%’ identified by ‘123456’垢袱; #創(chuàng)建用戶并授權(quán)
取消 abc 用戶的刪除庫(kù)、表港柜、表中數(shù)據(jù)的權(quán)限
Mysql>revoke drop,delete on aa.a1 from abc@‘%’请契; #取消刪除權(quán)限(登錄 abc 測(cè)試)
Mysql>show grants for abc@‘%’; #查看指定用戶的授權(quán)
Mysql>show grants for atguigu@‘%’夏醉; - 備份和還原
mysqldump 備份:
備份:
mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 > /備份路徑/備份文件名(備份整個(gè)數(shù)據(jù)庫(kù))
mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 表名 > /備份路徑/備份文件名(備份數(shù)據(jù)表)
備份多個(gè)庫(kù):--databases 庫(kù) 1爽锥,庫(kù) 2
備份所有庫(kù):--all-databases
備份多個(gè)表:庫(kù)名 表 1 表 2
還原:mysql 數(shù)據(jù)庫(kù) < 備份文件
注意:還原時(shí),若導(dǎo)入的是某表畔柔,請(qǐng)指定導(dǎo)入到哪一個(gè)庫(kù)中
mysqlhotcopy 備份:
備份:mysqlhotcopy --flushlog -u=’用戶’ -p=’密碼’ --regexp=正則 備份目錄
還原:cp -a 備份目錄 數(shù)據(jù)目錄(/var/lib/mysql)
mysqldump 和 mysqlhotcopy 示例:
Mysql 備份和還原
把數(shù)據(jù)庫(kù) aa 備份到/root 目錄下
mysqldump –uroot –p aa > ~/aa.sql
模擬數(shù)據(jù)庫(kù) aa 丟失(刪除數(shù)據(jù)庫(kù) aa)
Mysql>drop database aa;
通過 aa.sql 文件還原(指定導(dǎo)入到哪個(gè)庫(kù)中)
mysql –uroot –p test < aa.sql
備份多個(gè)數(shù)據(jù)庫(kù)(--databases)
mysqldump –uroot –p --databases aa test > abc.sql
還原(先模擬丟失)
mysql –uroot –p < abc.sql
備份有規(guī)則的數(shù)據(jù)庫(kù)
Mysql>create database a1; #連續(xù)創(chuàng)建三個(gè) a 開頭的數(shù)據(jù)庫(kù)
mysqlhotcopy --flushlog –u=‘root’ –p=‘456’ --regexp=^a
還原(先模擬丟失)
Mysql>drop database a1; #順序刪除 a 開頭的數(shù)據(jù)庫(kù)
cp –a /mnt/* /var/lib/mysql/ #復(fù)制產(chǎn)生的文件到數(shù)據(jù)庫(kù)目錄下
登錄數(shù)據(jù)庫(kù)查看即可
mysql-binlog 日志備份:
二進(jìn)制日志(log-bin 日志):所有對(duì)數(shù)據(jù)庫(kù)狀態(tài)更改的操作(create氯夷、drop、update 等)
修改 my.cnf 配置文件開啟 binlog 日志記錄功能
vim /etc/my.cnf
log-bin=mysql-bin #啟動(dòng)二進(jìn)制日志
按時(shí)間還原:
--start-datetime
--stop-datetime
格式:mysqlbinlog --start-datetime ‘YY-MM-DD HH:MM:SS’ --stop-datetime ‘YY-MM-DD
HH:MM:SS’ 二進(jìn)制日志 | mysql -uroot -p
按文件大小還原:
--start-position
--stop-position
mysql-binlog 日志備份示例:
mysqlbinlog --start-datetime=‘2018-09-11 14:24:00’ --stop-datetime=‘2018-09-11 14:28:00’
mysql-bin.000006 | mysql –uroot –p123123
注:所選時(shí)間段一定要完整包含所有動(dòng)作(可以在原來基礎(chǔ)上稍微增加點(diǎn)時(shí)間)
按文件大小還原:還原到 bb 庫(kù)被刪除的數(shù)據(jù)狀態(tài)
1.查看 bb 庫(kù)被刪除前后的文件大小
MySQL 數(shù)據(jù)類型
在 MySQL 中靶擦,有三種主要的類型:文本腮考、數(shù)字和日期/時(shí)間類型。
Text 類型:
Number 類型: