1. mysql的版本升級5.6.44-5.7.26
mysql版本升級有就地升級和遷移升級艘款,mysql跨版本升級最好只跨一個版本玉转,版本升級包括軟件升級和數(shù)據(jù)升級突想!
環(huán)境:虛擬機是mysql5.6.44版本已經(jīng)安裝完成可用使用 升級到5.7.26版本
軟件升級
1. 官網(wǎng)下載新版本到指定目錄/usr/local/ 并解壓。
2.修改舊版本軟連接指向,ln -snf 5.7.26 mysql 命令執(zhí)行后如下圖
關(guān)于ln 命令的擴展究抓,想要刪除一個軟鏈接時猾担,rm -rf mysql”/“ 不能加斜線,否則只是刪除目錄下的資源刺下。刪除軟連接目錄下資源绑嘹,源連接目標下的數(shù)據(jù)也會被刪除
數(shù)據(jù)升級
1.關(guān)閉舊版本mysql服務(wù) mysqladmin -u root -p shutdown
2.使用現(xiàn)有數(shù)據(jù)目錄啟動新版本服務(wù),此處因為做了軟連接的更改橘茉,因此mysql的啟動配置文件數(shù)據(jù)目錄都無需改動工腋。
/usr/local/mysql/support-files]#./mysql.server start
3.使用
mysql_upgrate 命令升級更新系統(tǒng)數(shù)據(jù)庫
mysql_upgrade -uroot -p -S /tmp/mysql.sock
產(chǎn)看庫可見升級成功。
參考 https://dev.mysql.com/doc/refman/5.7/en/upgrade-binary-package.html
2. mysql的連接管理
1.1 MySQL Linux 連接協(xié)議
Socket : 本地登錄,提前創(chuàng)建好localhost相關(guān)用戶
TCPIP : 遠程登錄,提前創(chuàng)建好 遠程用戶.
1.2 MySQL客戶端
mysql :
[root@db01 ~]# mysql -uroot -p -S /tmp/mysql.sock
[root@db01 ~]# mysql -uoldguo -p -h10.0.0.51 -P3306
例子: 管理員用戶root@'localhost',密碼丟失 .
(1. 通過跳過授權(quán)表參數(shù)+跳TCP/IP的參數(shù),啟動數(shù) 據(jù)庫
--skip-grant-tables : 跳過授權(quán)表,連接層關(guān)閉驗 證模塊.
--skip-networking : 關(guān)閉連接層TCP/IP,只留 socket文件連接
(2. 無密碼登錄到MySQL
mysql
(3. 修改密碼
mysql> alter user root@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123';
(5. 正常重啟數(shù)據(jù)庫
[root@db01 ~]# service mysqld restart
2.5 mysql的其他關(guān)閉方式
[root@db01 ~]# mysqladmin -uroot -p -S /tmp/mysql.sock shutdown
3. 多實例配置mysql
5.1 規(guī)劃
(1) 端口 : 3307,3308,3309
(2) 數(shù)據(jù) : /data/330{7..9}/data
(3) 配置文件: /data/330{7..9}/my.cnf
port=3307/3308/3309
server_id=7/8/9
datadir=/data/330{7..9}/data
socket=/tmp/mysql330{7..9}.sock
5.2 干活
(1) 創(chuàng)建關(guān)鍵目錄
mkdir -p /data/330{7..9}/data
chown -R mysql.mysql /data/*
(2) 初始化數(shù)據(jù)
[root@db01 /data]# mv /etc/my.cnf /tmp
mysqld --initialize-insecure --user=mysql -- basedir=/usr/local/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql -- basedir=/usr/local/mysql --datadir=/data/3308/data
mysqld --initialize-insecure --user=mysql -- basedir=/usr/local/mysql --datadir=/data/3309/data
(3) 準備配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3307/data
port=3307
server_id=7
socket=/tmp/mysql3307.sock
EOF
(5) 準備啟動腳本
cat > /etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en /using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld -- defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
(6) 啟動多實例
[root@db01 ~]# systemctl start mysqld3307
[root@db01 ~]# systemctl start mysqld3308
[root@db01 ~]# systemctl start mysqld3309
4. SQL基礎(chǔ)應(yīng)用&元數(shù)據(jù)獲取
SQL介紹
結(jié)構(gòu)化的查詢語言.關(guān)系型數(shù)據(jù)庫中通用的一種命令.
使用SQL_MODE規(guī)范SQL語句的語法標準.SQL_MODE
mysql> select @@sql_mode;
ONLY_FULL_GROUP_BY,
STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,
NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION
確保數(shù)據(jù)有意義.SQL常用分類
DDL : 數(shù)據(jù)定義語言
DCL : 數(shù)據(jù)控制語言
DML : 數(shù)據(jù)操作語言
DQL : 數(shù)據(jù)查詢語言-
字符集&校對規(guī)則介紹
字符集:
utf8 : 最多允許字符長度為3個字節(jié)
utf8mb4 : 最多允許字符長度為4個字節(jié)
gbk :
mysql> show charset;
校對規(guī)則 : 排序規(guī)則
AbCD
ABCD
mysql> show collation;
說明:
可以作用于庫級別和表級別.一般是在建庫建表時設(shè)定
5.2 列的屬性
5.2.1 數(shù)據(jù)類型
保證數(shù)據(jù)有意義.
(1) 數(shù)值類型
tinyint : 1Bytes=8bit -128~127 , 0-255 .最多存儲1個字節(jié)長度數(shù)字
int : 4Bytes, 0-232,-231~2^31-1,10位數(shù)
bigint : 8Bytes, 0-264,-263~2^63-1,20位數(shù)
說明:數(shù)值類型中一個字節(jié)等于8bit全1的情況最多是255
(2) 字符串類型(萬能)
char(64) : 括號中最大的字符長度 255字節(jié)
定長的字符串類型,一次性分配固定長度存儲空間,存不滿,用空字符串填充varchar(64) :變長的字符類型, 按需分配存儲空間.
65535字節(jié),最多65533.
1-255字符之間,單獨占用1字節(jié)存儲字符長度.
256-65535字符長度,單獨占用2字節(jié)存儲字符長度
區(qū)別 :
char(64) varchar(64)- 定長 和 變長
- 64代表了,最多可以存儲字符的個數(shù)
- 字節(jié)限制 255 , 65535字節(jié)
- varchar 需要花費額外的1-2字節(jié)存儲字符長度
說明:字符串類型char()括號里的數(shù)字代表字節(jié)數(shù)
(3)enum('山東省','河北省','北京市','上海市'......) :
枚舉類型
0 1 2 3
注意: 數(shù)字列不要使用,經(jīng)常變化的列不要使用
(3) 時間類型
datetime
timestamp
DATETIME
范圍為從 1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999畅卓。
TIMESTAMP
1970-01-01 00:00:00.000000 至 2038-01-19 03:14:07.999999擅腰。
timestamp會受到時區(qū)的影響
(5) 二進制類型 (略)
(6) Json類型(8.0以后支持的比較好)
6.3 約束
not null 非空約束
unique key 唯一約束
primary key 主鍵約束聯(lián)合主鍵(非空且唯一),一張表只能有一個,一般是ID列,身份證列翁潘,學(xué)號列趁冈,帶有字母+數(shù)字的“萋恚可用聯(lián)合主鍵約束其唯一性正合適
數(shù)據(jù)類型約束: unsigned 非負數(shù)
6.5 其他屬性
auto_increment 自增長
default 默認值
comment 注釋